精致从细节做起。前端的工作也有一段时间了,大大小小的前端框架都有接触过,越是深入学习越是感觉之前的学习过于粗糙,基础不够扎实,于是准备近期把JavaScript的基础知识点梳理一下,查缺补漏,做一名精致的JavaScripter。
本系列文章作为《JavaScript高级程序设计》(第3版)和《ECMAScript6入门》(第3版)的学习笔记,ES6相关知识点会有单独标识。如有错误,欢迎指出;如有疑问的地方,请在文章下方提问。
一个完整的JavaScript实现由下列三个部分组成:
- 核心(ECMAScript)
- 文档对象模型(DOM)
- 浏览器对象模型(BOM)
ECMAScript
ECMAScript 是一门语言标准,JavaScript 便是在这基础上构建的相对完善的脚本语言。
我们常见的 Web 浏览器只是 ECMAScript 实现的运行环境之一,运行环境不仅提供基本的 ECMAScript 实现,同时也会提供该语言的扩展——DOM,DOM 则利用 ECMAScript 的语法实现具体功能。其它宿主环境还有 Node 和 Adobe Flash。
ECMAScript 由下列部分组成:
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 操作符
- 对象
ECMAScript、ES6 是什么意思?1996年,JavaScript 的创造者 Netscape 公司将 ECMAScript 提交给标准化组织 ECMA。次年,ECMA 发布262号标准文件(ECMA-262),并将这种语言称为 ECMAScript,这个版本就是1.0。
2011年,ECMAScript 5.1版本发布后,就开始定制6.0版本,ES6泛指5.1版本后 JavaScript 的下一代标准,涵盖了ECMAScript2015、ECMAScript2016、ECMAScript2017等等。
ECMAScript 标准会在每年的6月发布一次,作为当年的正式版本,ECMAScript2015 便是2015年发布的ECMAScript正式版本。
ES6 支持情况
各大浏览器对 ES6 的支持情况:ES6浏览器支持情况;
Nodejs 对 ES6 的支持情况:Nodejs支持情况。
Babel 转码
在开发过程中我们需要用到 ES6 的新特性,但又需要考虑浏览器的兼容性,这时候我们就可以使用 Babel 来帮助我们;使用 Babel 可以把 ES6 的代码转成 ES5 的代码,从而让我们的代码可以在不支持 ES6 的环境运行;
babel快速入门手册:点击查看。
文档对象模型(DOM)
文档对象模型(DOM,Document Object Model)是处理 HTML 或 XML 文档的API;
DOM把整个页面映射为多层节点结构,HTML 或 XML 页面中的每个组成部分都是某种类型的节点,这些节点又包含着不同类型的数据。下面是一个 HTML 页面节点结构的实例:
DOM 不是 JavaScript 独有的,许多其他语言都实现了它。在 Web 浏览器中基于 ECMAScript 实现的 DOM 已经成为 JavaScript 的重要组成部分。
DOM Level
1998年10月,DOM Level1 成为了 W3C 的推荐标准,为 DOM 的跨平台开发奠定基础。
DOM Level1 由两个模块组成:DOM Core 和 DOM HTML 。其中,前者提供了基于 XML 的文档的结构图,以便访问和操作文档的任意部分;后者添加了一些 HTML 专用的对象和方法,从而扩展了 DOM Core。
DOM Level2 在 DOM Level1 的基础上引入了下列模块,也给出了众多新类型和新接口的定义:
- DOM 视图:定义了跟踪文档视图的接口;
- DOM 事件:定义了事件和事件处理的接口;
- DOM 样式:定义了基于 CSS 为元素应用样式的接口;
- DOM 遍历和范围:定义了遍历和操作文档树的接口。
DOM Level3 进一步扩展了DOM,引入了以统一的方式载入和保持文档的方法,以及验证文档的方法;DOM Core 开始支持 XML 1.0 规范。
DOM Level4 定义了基于事件和节点的平台中立(platform-neutral)模型,增加了 Mutation Observers 作为 Mutation 事件的替换。
不同浏览器对于 DOM 的支持程度,可以在 caniuse - 点击访问 进行查询。
浏览器对象模型(BOM)
从根本上讲,BOM 只处理浏览器窗口和框架,但人们习惯把所有针对浏览器的 JavaScript 扩展算作 BOM 的一部分,BOM 由下列部分组成:
- 弹出新浏览器窗口的功能;
- 移动、缩放和关闭浏览器的功能;
- navigator 、 location 、 screen 、 XMLHttpRequest(ActiveXObject)对象;
- 对 cookies 的支持;
由于没有 BOM 标准可以遵循,所有每个浏览器都有自己的实现,当然也存在一些默认的标准;现在有了 HTML5 ,BOM 有望朝着兼容性越来越高的方向发展。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。