JavaScript最早由Netscape公司开发

JavaScript的发展历程

我们知道Windows桌面程序是可以交互的,用户可以点击菜单、按钮、下拉列表等控件,并通过消息机制来响应用户操作。 而最早的网页只是静态浏览,为了支持用户交互,浏览器开发商如Netscape和Microsoft相继都开发了自己的脚本语言,可以嵌入网页直接执行。 Netscape管理层希望这个语言像Java,因此取名JavaScript,在其Navigator 2.0浏览器中开始支持。而微软的脚本语言取名JScript,首先内置于IE3.0。 市场上还有一些其他的脚本语言版本。为了统一这些不同的版本,国际标准化组织ECMA对此进行了标准化,也就是ECMAScript,其后得到了行业的广泛支持。

ECMAScript和JavaScript的关系是,前者是语言规范,而后者是一个具体实现。

JavaScript之于Java的语言定位大体上是Java用来开发服务器和组件,而JavaScript保持简单易用来完成客户端功能,就好比微软当时的C++和VBScript的关系一样。

JavaScript虽然由于市场原因取名Java,但其实更像C和Self语言的后代。JavaScript的总体设计思路如下:

  • 类C语言风格的语法
  • 借鉴了Java的垃圾回收机制
  • 类Self语言风格的基于原型(Prototype)的OO(Object-Oriented)模型

JavaScript最初的版本由于设计和实现都很仓促,并非一门严谨的编程语言,有不少漏洞广为诟病。但是最重要的是能工作(it works!),而且由于浏览器的市场竞争和模仿,被快速广泛支持。从而形成了事实上的语言标准。

当然JavaScript本身也随着Web一起演进而变得更为成熟和强大。在客户端领域击败了Java Applet、VBScript乃至其后起之秀Flash的ActionScript,是如今无可置疑的Web客户端第一编程语言,并开始向系统级语言扩展(NodeJS)。

JavaScript语言标准的当前最新版本是ECMAScript6,发展历程大致如下:

  1. 1995: JavaScript出生,小名叫LiveScript。
  2. 1997: ECMAScript标准确立。
  3. 1999: ES3出现,与此同时IE5风靡一时。
  4. 2000–2005: XMLHttpRequest也就是AJAX大获流行,给了JS第2次生命。
  5. 2009: ES5出现,(就是我们大多数人现在使用的)例如forEachObject.keysObject.create 以及JSON标准。
  6. 2015: ES6/ECMAScript2015出现。主要是一些语法糖(好的语法改进),但缺少功能突破。

JavaScript的意外成功让人想起一个道理:聪明不如幸运,勤奋不如眼光。

什么是DOM

JavaScript最主要的操作对象毫无疑问是HTML文档,我们使用面向对象的方法来对文档内容进行抽象和概念化,以便于程序对其进行操作。这样的文档对象模型就是DOM(Document Object Model),本质上是一种应用程序接口(API)。

HTML文档的DOM结构和XML的DOM结构类似,都是一种树形结构。树的根节点就是document,然后有父节点、子节点、祖先、后代、兄弟节点这些关系。

什么是BOM

JavaScript除了要能操作文档,还需要能操作浏览器,比如获取浏览器窗口大小,或者刷新页面。和DOM类似,浏览器也提供了对象模型来支持JS的访问。这个模型就是BOM(Browser Object Model)。

BOM主要包含如下6个对象:

  1. window对象,它是BOM的根对象,其它的BOM对象都是windows对象的属性
  2. document对象表示浏览器中加载页面的文档对象,而这个对象也就是DOM模型的根对象
  3. location对象包含了浏览器当前的URL信息
  4. navigator对象包含了浏览器本身的信息
  5. screen对象包含了客户端屏幕及渲染能力的信息
  6. history对象包含了浏览器访问网页的历史信息。

JavaScript只有通过调用BOM/DOM API才能赋予网页文档动态交互特性,才能真正使得HTML变成动态的HTML。

参考自:http://techbrood.com/h5b2a?p=why-js-exists

[JavaScript]JS由来的更多相关文章

  1. Seajs是什么及sea.js 由来,特点以及优势

    Seajs是什么及sea.js 由来,特点以及优势 这篇文章主要介绍了Seajs的相关知识和和学习心得,适合刚接触SeaJS的同学,需要的朋友可以参考下,有更好的新手教程或文档,欢迎推荐.分享   1 ...

  2. 【转】关于URL编码/javascript/js url 编码/url的三个js编码函数

    来源:http://www.cnblogs.com/huzi007/p/4174519.html 关于URL编码/javascript/js url 编码/url的三个js编码函数escape(),e ...

  3. 关于URL编码/javascript/js url 编码/url的三个js编码函数

    关于URL编码/javascript/js url 编码/url的三个js编码函数escape(),encodeURI(),encodeURIComponent() 本文为您讲述关于js(javasc ...

  4. javascript(js)小数精度丢失的解决方案

    原因:js按照2进制来处理小数的加减乘除,在arg1的基础上 将arg2的精度进行扩展或逆扩展匹配,所以会出现如下情况. javascript(js)的小数点加减乘除问题,是一个js的bug如0.3* ...

  5. paip.java 以及JavaScript (js) 的关系以及区别

    paip.java 以及JavaScript (js) 的关系以及区别 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http:// ...

  6. JavaScript js无间断滚动效果 scrollLeft方法 使用模板

    JavaScript js无间断滚动效果 scrollLeft方法 使用模板 <!DOCTYPE HTML><html><head><meta charset ...

  7. JavaScript(js)/上

    JavaScript(js) ECMA-----定义的基础语法 DOM------document  object  model BOM------Browser  object  model Jav ...

  8. 【HANA系列】SAP HANA XS使用JavaScript(JS)调用存储过程(Procedures)

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS使用Jav ...

  9. Atitit. Java script 多重多重catch语句的实现and Javascript js 异常机制

    Atitit. Java script 多重多重catch语句的实现and Javascript js 异常机制 1. 语法错误(ERROR)和运行期错误(Exception) 1 2. 错误类型判断 ...

随机推荐

  1. CSharper~

    昨天晚上开始,重启读clr via c#大计.Jeffery大神的大作基本上没人不推荐的,所以我也抱了很大的期待,希望读完以后对.net的认识能有质的飞跃.争取五月份内读完.昨天看完了第一章,感觉.n ...

  2. Linux学习之路—Linux文件与目录管理

    该内容来自鸟哥私房菜 1.目录的相关操作 1.1 特殊的目录 .  代表此层目录 .. 代表上一层目录 -  代表前一个工作目录 ~ 代表"目前用户身份"所在的主文件夹 ~acco ...

  3. formValidator 表单验证

    作为一名程序员,在解决工作中遇到问题之后,做一些总结是有必要的,既方便总结温习相关知识点,也为广大的程序员提供了一些工作经历,给予同行一面明鉴. 首先,众所周知的,我们需要引用js类库: eg:< ...

  4. start a new android studio project not working

    现象:点击无响应 解决:Configure -> Project Defaults -> Project Structure -> Platform Settings (SDK) c ...

  5. 105 董婷婷 第二次Sprint总结

    总结: 第二次冲刺结束了,这次冲刺的主要任务是建立数据库.项目进行到现在也基本定型了,满满的成就感啊.经过一段时间的合作,团队成员间的默契大大提高,还有最后一次冲刺,队友们,加油哦!

  6. html页面元素事件丢失

    前段时间做网站包括最近用mvc做oa都发现这个奇怪现象,就是页面加载完毕后页面元素事件(比如按钮点击.复选框change)一切正常,但是当执行查询或者其他操作后页面事件丢失.具体原因暂没有时间分析,现 ...

  7. BSD License

    BSD开源协议(original BSD license.FreeBSD license.Original BSD license) BSD开源协议是一个给于使用者很大自由的协议.基本上使用者可以”为 ...

  8. 常用的shell命令

    作为一名有10年以上使用年龄的Linux/MacOSX用户来说,键盘的作用往往要远大于鼠标.而且,作为一个黑客文化的追随者,我也希望越来越多的用户能认识到命令行的潜在价值,不要把它视为只是计算机专家们 ...

  9. [BZOJ 3191][JLOI 2013]卡牌游戏

    觉得这题很有必要讲一下! 现在发现在做概率题,基本是向 dp 和 马尔可夫链 靠齐 但是这一题真是把我坑了,因为状态太多,马式链什么的直接死了 我一开始的想法就是用 f[i][j] 表示剩余 i 个人 ...

  10. login

    package addresslist; import java.awt.EventQueue; import java.awt.Graphics; import java.awt.event.Act ...