第1章 JavaScript简介

1.1 JavaScript简史

1995年2月,就职于Netscape公司的布兰登·艾奇开发一种名为LiveScript脚本语言,该语言同时在浏览器和服务端中使用(它在服务端上的名字叫LiveWire)。Netscape为了搭上媒体热炒Java,在发布产品前夕临时把Livescript改名为JavaScript。

1997年,以JavaScript 1.1为蓝本的建议被提交给欧洲计算机制造商协会(ECMA),完成了ECMA-262——定义一种名为ECMAScript的新脚本语言的标准。

1998年,国际标准化组织和国际电工委员会(ISO/IEC)也采用了ECMAScript作为标准(即ISO/IEC-16262)。

1.2 JavaScript实现

1.2.1 ECMAScript

1. ECMAScript的版本

  • 第1版:与Netscape的JavaScript 1.1 相同。
  • 第2版:主要编辑加工的结果,未做大的改动。
  • 第3版:修改内容涉及字符串处理、错误定义和数值输出,新增对正则表达式、新控制语句、try-catch异常处理的支持,并围绕标准国际化细微修改。此版本标志着ECMAScript成为一门真正的编程语言
  • 第4版:包含了强类型变量、新语句和新数据结构、真正的类和经典继承,还定义与数据交换的新方式。由于第4版跨域太大在正式发布前被放弃。
  • 第5版:为之前ECMAScript 3.1版本,在2009年12月3日正式发布。新功能包括原生JSON对象(用于解析和序列化JSON数据)、继承的方法和高级属性定义,还包含一种严格模式,对ECMAScript引擎解释和执行代码进行补充
  • 第6版:继承第4版的功能,在2015年6月正式发布
  • 第7版: 尚未发布

2. 什么是ECMAScript兼容

  • 支持ECMA-262描述的所有“类型、值、对象、属性、函数以及程序句法和语义" (ECMA-262第1页);
  • 支持Unicode字符标准。

此外,兼容的实现还可以进行下列扩展。

  • 添加ECMA-262没有描述的“更多类型、值、对象、属性和函数", ECMA-262所说的这些新增特性,主要是指该标准中没有规定的新对象和对象的新属性。
  • 支持ECMA-262没有定义的“程序和正则表达式语法”。(也就是说,可以修改和扩展内置的正则表达式语法。)

上述要求为兼容实现的开发人员基于ECMAScript开发一门新语言提供了广阔的空间和极大的灵活性,这也从另一个侧面说明了ECMAScript受开发人员欢迎的原因。

3. Web浏览器对ECMAScript的支持

​https://kangax.github.io/compat-table/es6/​

1.2.2 文档对象模型(DOM)

文档对象模型是针对XML且经过扩展用于HTML的应用程序编程接口(API)

1. 为什么要使用DOM

由于Netscape和微软在开发DHTML方面各抒起见,为防止浏览器互不兼容,负责制定Web通信标准的W3C规划了DOM。

2. DOM级别

DOM1级由两个模块组成:DOM核心(DOM Core)和DOM HTML,主要目的是映射文档的结构。

DOM2级在1级的基础上扩充(DHTML一直都支持的)鼠标和用户界面事件、范围、遍历(迭代DOM文档的方法)等细分模块,而且通过对象接口增加对CSS的支持。

DOM3级引入以统一方式加载和保存文档的方法

3. 其他DOM标准

  • SVG (Scalable Vector Graphic,可伸缩矢量图)
  • MathML (Mathematical Markup Language,数学标记语言)
  • SMIL (Synchronized Multimedia Integration Language,同步多媒体集成语言)
  • XUL( XML User Interface Language, XML用户界面语言)

1.2.3 浏览器对象模型(BOM)

从根本上讲,BOM只处理浏览器窗口和框架;但人们习惯上也把所有针对浏览器的JavaScript扩展算作BOM的一部分。下面就是一些这样的扩展:

  • 弹出新浏览器窗口的功能
  • 移动、缩放和关闭浏览器窗口的功能
  • 提供浏览器详细信息的navigator对象
  • 提供浏览器所加载页面的详细信息的location对象
  • 提供用户显示器分辨率详细信息的screen对象
  • 对cookies的支持
  • 像XMLHttpRequest和IE的Activexobject这样的自定义对象

由于没有BOM标准可以遵循,因此每个浏览器都有自己的实现。虽然也存在一些事实标准,例如要有window对象和navigator对象等,但每个浏览器都会为这两个对象乃至其他对象定义自己的属性和方法。现在有了HTML5,BOM实现的细节有望朝着兼容性越来越高的方向发展。

1.3 小结

JavaScript是一种专为与网页交互而设计的脚本语言,由下列三个不同的部分组成:

  • ECMAScript,由ECMA-262定义,提供核心语言功能
  • 文档对象模型(DOM),提供访问和操作网页内容的方法和接口
  • 浏览器对象模型(BOM),提供与河览器交互的方法和接口

1995年JavaScript诞生,主要目的是处理以前有服务器语言(如Perl)负责的一些输入验证操作。

JavaScript从一个简单的输人验证器发展成为一门强大的编程语言,完全出乎人们的意料。应该说,它既是一门非常简单的语言,又是一门非常复杂的语言。说它简单,是因为学会使用它只需片刻功夫;而说它复杂,是因为要真正掌握它则需要数年时间。要想全面理解和掌握JavaScript,关键在于弄清楚它的本质、历史和局限性。