JS红宝书第一章笔记
《JavaScript高级程序设计》(又称红宝书)可以说是前端程序员必读的经典之一。不论是新手还是高手,每次翻开总能得到新的启发和收获。
什么是JavaScript
历史回顾
1995 年,网景公司在其 Navigator 浏览器中加入了 JavaScript 以代替 Perl 等服务端语言处理简单的输入验证,比如 必填字段是否填写、某个输入值是否有效 等。在那个普遍使用拨号上网的时代无疑极大地提高了用户体验。后续 JavaScript 又新增了许多新特性,逐渐称为浏览器的标配。
如今,JavaScript 已经从简单的输入验证脚本变成了强大的编程语言,它很简单, 学会用只需要短短几天;但它又十分复杂,掌握它需要很多年。要真正学好 JavaScript ,理解其本质、历史及局限性是非常重要的。
JavaScript 实现
完整的 JavaScript 实现包括了以下几个部分
- 核心(ECMAScript)
- 文档对象模型(DOM)
- 浏览器对象模型(BOM)
ECMAScript
ECMAScript(ECMA-262定义的语言)可以理解为 JavaScript 的标准。
ECMAScript 经过许多版本的修改,删除和增加了许多特性。其中比较重要的是第六版,俗称 ES6、ES2015,正式支持了类、模块、迭代器、生成器、箭头函数、期约、反射、代理和众多新的数据类型。
DOM
文档对象模型(DOM,Document Object Model)是一个应用编程接口,用于在 HTML 中使用扩展的 XML 。它将整个页面抽象为一组分层节点。比如下面的 HTML 页面
<html lang="zh">
<head>
<title>Document</title>
</head>
<body>
<p>Hello World</p>
</body>
</html>
可以看作如下分层节点
html
|
|-heade
| |-title
| |-Document
|
|-body
| |-p
| |-Hello World
DOM 通过创建表示文档的树,让开发者可以随心所欲地控制网页的内容和结构。使用 DOM API 可以轻松地删除、添加、替换、修改节点。
BOM
浏览器对象模型(BOM)用于访问和操作浏览器的窗口。主要针对浏览器窗口和子窗口(frame)。不过我们通常会将任何特定于浏览器的扩展都归于 BOM 的范畴,比如下面就是这样一些扩展
- 弹出新浏览器窗口
- 移动、缩放和关闭浏览器窗口
- navigator 对象,提供浏览器的信息
- location 对象,提供浏览器加载页面的信息
- screen 对象,提供关于用户屏幕分辨率的信息
- performance 对象,提供浏览器内存占用、导航行为和时间统计的信息
- 对 cookie 的支持
- 其他自定义对象,如 XMLHttpRequest 和 IE 的 ActiveXObject
小结
JavaScript是一门用来与网页交互的脚本语言,包括以下三个部分
- ECMAScript:由 ECMA-262 定义并提供核心功能
- 文档对象模型(DOM):提供与网页内容交互的方法和接口
- 浏览器对象模型(BOM):提供与浏览器交互的方法和接口
- JavaScript 的这三个部分目前得到了市面上浏览器不同程度的支持。所有浏览器基本上对 ES5 提供了完善的支持,对 ES6 和ES7 的支持度也在不断提升。这些浏览器对 DOM 的支持各不相同。HTML5 中收录的 BOM 也会因浏览器而异。不过开发者仍然可以假设存在很大一部分公共特性。