第一章 什么是JavaScript
1995年,JavaScript问世。当时,它的主要作用是代替Perl等服务器端语言处理输入验证。
1.1 简短的历史回顾
1995年,网景公司的一位叫Brendan Eich的工程师,开始为即将发布的Netscape Navigator 2 开发一个叫Mocha(后来改名为LiveScript)的脚本语言。当时计划是在客户端和服务器端都使用它,它在服务器端叫LiveWire。
为了赶上发布时间,网景与Sun公司结为开发联盟,共同完成LiveWire的开发。在Netscape Navigator 2发布前,网景把LiveWire改名为Javas,以便搭上媒体当时热烈炒作Java的顺风车。[emm.... 所以说Java和JavaScript没有半毛钱关系]
因为JavaScript1.0很成功,网景又在Netscape Navigator 3发布了1.1版本[既然火,那就多投入点嘛]
。尚未成熟的Web的受欢迎程度达到了历史新高,而网景则稳居市场领导者的位置。
微软一看,我靠JavaScript这么火,我也来插一脚把。于是,在Netscape Navigator 3发布不久后,微软发布了IE3,其中包含了自己的JavaScript实现叫做JScript(擦,你能蹭Java的热度,我也就蹭你的热度)
。1996年8月,微软的重磅进入Web了;浏览器领域,这是网景永远的痛(遭到背刺了能不痛嘛);但是,有竞争才能促进发展嘛!,所以它代表了JavaScript作为一门语言向前迈进了一大步。
俗话说行业发展到一个阶段,势必会统一标准。总不能让你两一直在那瞎搞把,所有就有一群大佬出来喊道统一一哈嘛,统一一哈嘛
。
1997年,JavaScript1.1作为天被提交给欧洲计算机制造协会(Ecma)。第29技术委员会(TC39)承担了标准化一门通用,跨平台,厂商中立的脚本语言的语法和语义
的任务。TC39委员会由来自网景、Sun、微软、Borland、Nombas和其他对这门脚本语言有兴趣的公司的工程师组成。他们花了数月时间打造出ECMA-262,也就是ECMAScript这个新的脚本语言标准。
1998年,国际标准化组织(ISO)和国际电工委员会(IEC)也将ECMAScript采纳为标准(ISO/IEC-16262)。自此以后,各路诸侯(浏览器)大统均以ECMAScript作为自己JavaScript实现的依据,虽然具体实现各有不同。
1.2 JavaScript实现
虽然JavaScript和ECMAScript基本上是同义词,但JavaScript远远不限于ECMA-262所定义的那样。
完整的JavaScript实现包含以下几个部分。
- 核心(ECMAScript)
- 文档对象模型(DOM)
- 浏览器对象模型(BOM)
1.2.1 ECMAScript
ECMAScript,即ECMA-262定义的语言,并不局限与Web浏览器。事实上,这门语言没有输入和输出之类的方法。ECMA-262 将这门语言作为一个基准来定义,以便在它之上再构建更稳健的脚本语言。
说来说去ECMA-262到底定义了些啥?在基本的层面,他描述这门语言的如下部分:
语法、类型、语句、关键字、保留字、操作符、全局对象
ECMAScript 只是对实现这个规范描述的所有方面的一门语言的称呼。JavaScript 实现了ECMAScript。
1.2.1 DOM
文档对象模型(DOM,Document Object Model)是一个应用编程接口(API),用于在 HTML 中使用扩展的 XML。DOM 将整个页面抽象为一组分层节点(树结构)。
DOM 通过创建表示文档的树,让开发者可以随心所欲地控制网页的内容和结构。使用 DOM API,
可以轻松地删除、添加、替换、修改节点
1.2.1 BOM
IE3 和 Netscape Navigator 3 提供了浏览器对象模型(BOM) API,用于支持访问和操作浏览器的窗
口。使用 BOM,开发者可以操控浏览器显示页面之外的部分。而 BOM 真正独一无二的地方,当然也是
问题最多的地方,就是它是唯一一个没有相关标准的 JavaScript 实现。HTML5 改变了这个局面,这个版
本的 HTML 以正式规范的形式涵盖了尽可能多的 BOM 特性。由于 HTML5 的出现,之前很多与 BOM
有关的问题都迎刃而解了。
总体来说,BOM 主要针对浏览器窗口和子窗口(frame),不过人们通常会把任何特定于浏览器的
扩展都归在 BOM 的范畴内。比如,下面就是这样一些扩展:
- 弹出新浏览器窗口的能力;
- 移动、缩放和关闭浏览器窗口的能力;
- navigator 对象,提供关于浏览器的详尽信息;
- location 对象,提供浏览器加载页面的详尽信息;
- screen 对象,提供关于用户屏幕分辨率的详尽信息;
- performance 对象,提供浏览器内存占用、导航行为和时间统计的详尽信息;
- 对 cookie 的支持;
- 其他自定义对象,如 XMLHttpRequest 和 IE 的 ActiveXObject。
1.3 JavaScript版本
没啥说的,就一直迭代更新
1.4 小结
JavaScript 是一门用来与网页交互的脚本语言,包含以下三个组成部分。
- ECMAScript:由 ECMA-262 定义并提供核心功能。
- 文档对象模型(DOM):提供与网页内容交互的方法和接口。
- 浏览器对象模型(BOM):提供与浏览器交互的方法和接口。
JavaScript 的这三个部分得到了五大 Web 浏览器(IE、Firefox、Chrome、Safari 和 Opera)不同程度
的支持。所有浏览器基本上对 ES5(ECMAScript 5)提供了完善的支持,而对 ES6(ECMAScript 6)和
ES7(ECMAScript 7)的支持度也在不断提升。这些浏览器对 DOM 的支持各不相同,但对 Level 3 的支
持日益趋于规范。HTML5 中收录的 BOM 会因浏览器而异,不过开发者仍然可以假定存在很大一部分
公共特性。