JavaScript高级程序设计第四版学习记录-第一章
2020年9月第四版
前言
- JavaScript与宿主关系密切, 宿主为JavaScript定义了与外界交互所需的全部API: DOM/网络请求/系统硬件/存储/事件/文件/加密/其他API等.
- 各种浏览器以及JavaScript引擎都按照自己的理解实现了这些规范, 对JavaScript更准确的定位是一组浏览器实现.
第1章 什么是JavaScript
1.1 简短历史回顾
- 1995年,网景公司Netscape开发的JavaScript问世 (原为LiveScript,为搭上Java的顺风车而改名为JavaScript), 主要用途是代替Perl等服务器端语言处理输入验证. 网景公司希望通过在其Navigator浏览器中加入JavaScript来处理输入验证的问题.
- 1996年, 微软重磅进入Web浏览器领域, 在其IE3中采用了JScript的JavaScript实现
- 因此, 出现了两个版本的JavaScript: Netscape Navigator 中的 JavaScript 和 IE 中的JScript.因此需要有规范JavaScript语法或者特性的标准.
- 1997年, JavaScript 1.1 作为提案被提交给欧洲计算机制造商协会ECMA. 第 39 技术委员会(TC39)承担了“标准化一门通用、跨平台、厂商中立的脚本语言的语法和语义”的任务。TC39 委员会打造出了 ECMA-262,也就是 ECMAScript 这个新的脚本语言标准。
- 1998 年,国际标准化组织(ISO)和国际电工委员会(IEC)也将 ECMAScript 采纳为标准(ISO/ IEC-16262)。自此以后,各家浏览器均以 ECMAScript 作为自己 JavaScript 实现的依据,虽然具体实现各有不同。
1.2 JavaScript实现
完整的JavaScript实现包括三部分:
- 核心 ECMAScript
- 文档对象模型 DOM
- 浏览器对象模型 BOM
1.2.1 ECMAScript
-
ECMAScript 即 ECMA-262 定义的语言, 并不局限于Web浏览器, 没有输入输出之类的方法. ECMA-262 将 ECMAScript 作为一个基准来定义, 以便在它之上再构建更稳健的脚本语言.
-
Web 浏览器只是 ECMAScript 实现可能存在的一种宿主环境(host environment)。**宿主环境提供 ECMAScript 的基准实现和与环境自身交互必需的扩展。扩展(比如 DOM)使用 ECMAScript 核心类型和语法,提供特定于环境的额外功能。**其他宿主环境还有服务器端 JavaScript 平台 Node.js 和即将被淘汰的 Adobe Flash。
-
不涉及浏览器,在基本层面, ECMA-262 描述了语言的如下部分: (语法 / 类型 / 语句 / 关键字 / 保留字 / 操作符 / 全局对象)
-
ECMAScript 只是对实现 ECMA-262 规范描述的所有方面的一门语言的称呼。
-
ES6
ECMA-262 第 6 版,俗称 ES6、ES2015 或 ES Harmony(和谐版),于 2015 年 6 月发布。这一版包含了大概这个规范有史以来最重要的一批增强特性。ES6 正式支持了类、模块、迭代器、生成器、箭头函数、期约promise、反射、代理和众多新的数据类型。
1.2.1 DOM
- 文档对象模型DOM (Document Object Model) 是一个应用编程接口 API, 用于在HTML中使用扩展的XML.
XML 指可扩展标记语言
XML 被设计为传输和存储数据,其焦点是数据的内容。
HTML 被设计用来显示数据,其焦点是数据的外观。
HTML旨在显示信息,而 XML 旨在传输信息。
- DOM 将整个页面抽象为一组分层节点。HTML 或 XML 页面的每个组成部分都是一种节点, 包含不同的数据.
- DOM 通过创建表示文档的树,让开发者可以随心所欲地控制网页的内容和结构。使用 DOM API,可以轻松地删除、添加、替换、修改节点。
1.2.3 BOM
- 访问和操作浏览器窗口的模型称为浏览器对象模型 Browser Object Model. 使用BOM, 开发者可以操作浏览器显示页面之外的部分.
- BOM 是唯一没有相关标准的JavaScript实现,每个浏览器实现的都是自己的BOM,但存在兼容性问题.——HTML5 解决了这个局面,以正式规范的形式涵盖了尽可能多的BOM特性。
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 的支持各不相同,但对 DOM Level 3 的支持日益趋于规范。HTML5 中收录的 BOM 会因浏览器而异,不过开发者仍然可以假定存在很大一部分公共特性。