第1章
1.1JavaScipt
JavaScript= 核心(ECMAScript)+ 文档对象模型(DOM)+ 浏览器对象模型(BOM)
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 会因浏览器而异,不过开发者仍然可以假定存在很大一部分公共特性
1.1.1ECMAScript(核心)
1.基本概括
ECMAScript(ECMA-262)宿主环境:Web浏览器(主流)+服务器端 JavaScript平台 Node.js+Adobe Flash(淘汰ing)
宿主环境定义:提供 ECMAScript的基准实现和与环境自身交互必需的扩展(DOM)
小注:ECMAScript没有输入和 输出之类的方法
在不涉及浏览器时:
ECMA-262定义= 语法 + 类型 + 语句+ 关键字+ 保留字 + 操作符 + 全局对象
ECMAScript 只是对实现这个规范描述的所有方面的一门语言的称呼。JavaScript 实现了 ECMAScript,而 Adobe ActionScript同样也实现了 ECMAScript。
2.不同版本新规范
ES6(ES2015):类、模块、迭代器、生成器、箭头 函数、期约、反射、代理和众多新的数据类型。
ES7(ES2016): Array.prototype.includes 和指数操作符。
ES8(ES2017):异步函数(async/ await)、SharedArrayBuffer 及 Atomics API,以及Object.values()/Object.entries()/Object. getOwnPropertyDescriptors()和字符串填充方法,另外明确支持对象字面量后的逗号。
ES9(ES2018):异步迭代、剩余和 扩展属性、一组新的正则表达式特性、Promise finally(),以及模板字面量修订。
ES10(ES2019): Array.prototype. flat()/flatMap()、String.prototype.trimStart()/trimEnd()、Object.fromEntries()方 法,以及 Symbol.prototype.description 属性,明确定义了 Function.prototype.toString() 的返回值并固定了 Array.prototype.sort()的顺序。另外,这次修订解决了与 JSON字符串兼容的 问题,并定义了 catch 子句的可选绑定。
1.1.2DOM
文档对象模型(DOM,Document Object Model)是一个应用编程接口(API),用于在 HTML中使用扩展的 XML。DOM将整个页面抽象为一组分层节点。HTML或 XML页面的每个组成部分都是一种节点,包含不同的数据。
DOM并非只能通过 JavaScript访问,而且确实被其他很多语言实现了。不过对于浏览器来说,DOM就是使用 ECMAScript实现的,如今已经成为 JavaScript语言的一大组成部分。
1.1.3BOM
BOM 主要针对浏览器窗口和子窗口(frame),它是唯一一个没有相关标准的 JavaScript实现,每个浏览器都会给它们定义自己的属性和方法。现在有了 HTML5,BOM的实现细节应该会日趋一致。
弹出新浏览器窗口的能力;
移动、缩放和关闭浏览器窗口的能力;
navigator 对象,提供关于浏览器的详尽信息;
location 对象,提供浏览器加载页面的详尽信息;
screen 对象,提供关于用户屏幕分辨率的详尽信息;
performance 对象,提供浏览器内存占用、导航行为和时间统计的详尽信息;
对 cookie的支持;
其他自定义对象,如 XMLHttpRequest 和 IE的 ActiveXObject。