Skip to content

Latest commit

 

History

History
executable file
·
89 lines (62 loc) · 5.13 KB

01、基本概念:什么是JavaScript.md

File metadata and controls

executable file
·
89 lines (62 loc) · 5.13 KB

js 的基本概念(一):什么是 JavaScript?

完整的 JavaScript 实现包含以下几个部分

  • 核心(ECMAScript)
  • 文档对象模型(DOM)
  • 浏览器对象模型(BOM)

ECMAScript

ECMAScript,即 ECMA-262 定义的语言,并不局限于 Web 浏览器。ECMA-262 定义的这门语言的基本内容如下部分

  • 语法
  • 类型
  • 语句
  • 关键字
  • 保留字
  • 操作符
  • 全局对象

ECMAScript 只是对实现这个规范描述的所有方面的一门语言的称呼。JavaScript 实现了 ECMAScript,而 AdobeActionScript 同样也实现了 ECMAScript。

  1. ECMA-262 的版本

ES6 正式支持了类、模块、迭代器、生成器、箭头函数、期约(Promise)、反射、代理和众多新的数据类型。

ES7 及其之后的版本,大部分是一些少量的特性语法增强

  1. ECMAScript 符合性是什么意思 ECMA-262 阐述了什么是 ECMAScript 符合性。要成为 ECMAScript 实现
    • 必须满足下列条件:
      • 支持 ECMA-262 中描述的所有“类型、值、对象、属性、函数,以及程序语法与语义”;
      • 支持 Unicode 字符标准。
    • 此外,符合性实现还可以满足下列要求。
      • 增加 ECMA-262 中未提及的“额外的类型、值、对象、属性和函数”。ECMA-262 所说的这些额外内容主要指规范中未给出的新对象或对象的新属性。
      • 支持 ECMA-262 中没有定义的“程序和正则表达式语法”(意思是允许修改和扩展内置的正则表达式特性)。

以上条件为实现开发者基于 ECMAScript 开发语言提供了极大的权限和灵活度,也是其广受欢迎的原因之一。

  1. 浏览器对 ECMAScript 的支持

一句话:绝大部分现代浏览器都已经支持绝大部分正式的规范。

DOM

文档对象模型(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

  • 不同的浏览器提供了各自浏览器对象模型(BOM) API,用于支持访问和操作浏览器的窗口。
  • 使用 BOM,开发者可以操控浏览器显示页面之外的部分。
  • 而 BOM 真正独一无二的地方,当然也是问题最多的地方,就是它是唯一一个没有相关标准的 JavaScript 实现。
  • 但随着 HTML5 的出现,BOM 的实现细节应该会日趋一致。

HTML 中 的 JavaScript

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 页面中的。