完整的 JavaScript 实现包含以下几个部分
- 核心(ECMAScript)
- 文档对象模型(DOM)
- 浏览器对象模型(BOM)
ECMAScript,即 ECMA-262 定义的语言,并不局限于 Web 浏览器。ECMA-262 定义的这门语言的基本内容如下部分
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 操作符
- 全局对象
ECMAScript 只是对实现这个规范描述的所有方面的一门语言的称呼。JavaScript 实现了 ECMAScript,而 AdobeActionScript 同样也实现了 ECMAScript。
- ECMA-262 的版本
ES6 正式支持了类、模块、迭代器、生成器、箭头函数、期约(Promise)、反射、代理和众多新的数据类型。
ES7 及其之后的版本,大部分是一些少量的特性语法增强
- ECMAScript 符合性是什么意思
ECMA-262 阐述了什么是 ECMAScript 符合性。要成为 ECMAScript 实现
- 必须满足下列条件:
- 支持 ECMA-262 中描述的所有“类型、值、对象、属性、函数,以及程序语法与语义”;
- 支持 Unicode 字符标准。
- 此外,符合性实现还可以满足下列要求。
- 增加 ECMA-262 中未提及的“额外的类型、值、对象、属性和函数”。ECMA-262 所说的这些额外内容主要指规范中未给出的新对象或对象的新属性。
- 支持 ECMA-262 中没有定义的“程序和正则表达式语法”(意思是允许修改和扩展内置的正则表达式特性)。
- 必须满足下列条件:
以上条件为实现开发者基于 ECMAScript 开发语言提供了极大的权限和灵活度,也是其广受欢迎的原因之一。
- 浏览器对 ECMAScript 的支持
一句话:绝大部分现代浏览器都已经支持绝大部分正式的规范。
文档对象模型(DOM,Document Object Model)
- 是一个应用编程接口(API),用于在 HTML 中使用扩展的 XML。
- DOM 将整个页面抽象为一组分层节点。
- HTML 或 XML 页面的每个组成部分都是一种节点,包含不同的数据。
- DOM 通过创建表示文档的树,让开发者可以随心所欲地控制网页的内容和结构。
- 使用 DOM API,可以轻松地删除、添加、替换、修改节点。
注意:DOM 并非只能通过 JavaScript 访问,而且确实被其他很多语言实现了。不过对于浏览器来说,DOM 就是使用 ECMAScript 实现的,如今已经成为 JavaScript 语言的一大组成部分。
MDN 中简单说明:
- DOM 模型用一个逻辑树来表示一个文档,树的每个分支的终点都是一个节点(node),每个节点都包含着对象(objects)。
- DOM 的方法(methods)让你可以用特定方式操作这个树,用这些方法你可以改变文档的结构、样式或者内容。
- 节点可以关联上事件处理器,一旦某一事件被触发了,那些事件处理器就会被执行。
一句话:DOM 是一个接口,我们可以通过 DOM 这个接口来对文档(即 HTML 或 XML)进行修改。
- 不同的浏览器提供了各自浏览器对象模型(BOM) API,用于支持访问和操作浏览器的窗口。
- 使用 BOM,开发者可以操控浏览器显示页面之外的部分。
- 而 BOM 真正独一无二的地方,当然也是问题最多的地方,就是它是唯一一个没有相关标准的 JavaScript 实现。
- 但随着 HTML5 的出现,BOM 的实现细节应该会日趋一致。
JavaScript 是通过 <script>
元素插入到 HTML 页面中的。这个元素可用于把 JavaScript 代码嵌入到
HTML 页面中,跟其他标记混合在一起,也可用于引入保存在外部文件中的 JavaScript。本章的重点可
以总结如下。
- 要包含外部 JavaScript 文件,必须将 src 属性设置为要包含文件的 URL。文件可以跟网页在同一台服务器上,也可以位于完全不同的域。
- 所有
<script>
元素会依照它们在网页中出现的次序被解释。在不使用 defer 和 async 属性的情况下,包含在<script>
元素中的代码必须严格按次序解释。 - 对不推迟执行的脚本,浏览器必须解释完位于
<script>
元素中的代码,然后才能继续渲染页面的剩余部分。为此,通常应该把<script>
元素放到页面末尾,介于主内容之后及</body>
标签之前。 - 可以使用 defer 属性把脚本推迟到文档渲染完毕后再执行。推迟的脚本原则上按照它们被列出的次序执行。
- 可以使用 async 属性表示脚本不需要等待其他脚本,同时也不阻塞文档渲染,即异步加载。异步脚本不能保证按照它们在页面中出现的次序执行。
- 通过使用
<noscript>
元素,可以指定在浏览器不支持脚本时显示的内容。如果浏览器支持并启用脚本,则<noscript>
元素中的任何内容都不会被渲染。
- ECMAScript:由 ECMA-262 定义并提供核心功能。
- 文档对象模型(DOM):提供与网页内容交互的方法和接口。
- 浏览器对象模型(BOM):提供与浏览器交互的方法和接口。
- JavaScript 是通过
<script>
元素插入到 HTML 页面中的。