第1章 JavaScript 简介
dobeco
# 第1章 JavaScript 简介
# 1.1 JavaScript简史
# 1.2 JavaScript实现
JavaScript实现由下列三部分组成:
ECMAScript
(核心)DOM
(文档对象模型)BOM
(浏览器对象模型)
# 1.2.1 ECMAScript
由ECMA-262
定义的ECMAScript
与Web
浏览器没有依赖关系。Web
浏览器是ECMAScript
实现可能的宿主环境之一,其他宿主环境包括Node.js
和Adobe Flash
动画
ECMAScript组成部分:
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 操作符
- 对象
ECMAScript版本:
版本 | 发布时间 | 版本差异 |
---|---|---|
1 | 1997年6月 | 首版 |
2 | 1998年6月 | 1998年6月发布。格式修正,以使得其形式与ISO/IEC16262国际标准一致 |
3 | 1999年12月 | 强大的正则表达式,更好的词法作用域链处理,新的控制指令,异常处理,错误定义更加明确,数据输出的格式化及其它改变 |
4 | 放弃 | 由于关于语言的复杂性出现分歧,第4版本被放弃,其中的部分成为了第5版本及Harmony的基础 |
5 | 2009年12月 | 新增“严格模式(strict mode)”,一个子集用作提供更彻底的错误检查,以避免结构出错。澄清了许多第3版本的模糊规范,并适应了与规范不一致的真实世界实现的行为。增加了部分新功能,如getters及setters,支持JSON以及在对象属性上更完整的反射[4][5][6][7][8] |
5.1 | 2011年6月 | ECMAScript标5.1版形式上完全一致于国际标准ISO/IEC 16262:2011。 |
6 | 2015年6月 | ECMAScript 2015(ES2015),第 6 版,最早被称作是 ECMAScript 6(ES6),添加了类和模块的语法,其他特性包括迭代器,Python风格的生成器和生成器表达式,箭头函数,二进制数据,静态类型数组,集合(maps,sets 和 weak maps),promise,reflection 和 proxies。作为最早的 ECMAScript Harmony 版本,也被叫做ES6 Harmony。 |
7 | 2016年6月 | ECMAScript 2016(ES2016),第 7 版,多个新的概念和语言特性[9] |
8 | 2017年6月 | ECMAScript 2017(ES2017),第 8 版,多个新的概念和语言特性[10] |
9 | 2018年6月 | ECMAScript 2018 (ES2018),第 9 版,包含了异步循环,生成器,新的正则表达式特性和 rest/spread 语法。 |
10 | 2019年6月 | ECMAScript 2019 (ES2019),第 10 版 |
# 1.2.2 文档对象模型(DOM)
文档对象模型(DOM
,Document Object Model
)是针对XML
但进过扩展用于HTML
的应用程序编程接口(API
,Application Programming Interface
)。DOM
把整个页面映射为一个多层节点结构,也叫作DOM
树,页面中每个组成部分都是某种类型的节点。
一个完整的HTML
页面应该包含下列标签:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
</body>
</html>
# 1. DOM级别
DOM1
DOM2
DOM3
# 1.2.3 浏览器对象模型(BOM)
扩展:
- 弹窗功能
- 移动、缩放和关闭浏览器
- 提供浏览器详细信息的
navigator
对象 - 提供浏览器所加载页面的详细信息的
navigator
对象 - 提供用户显示器分辨率详细信息的
screen
对象 - 支持
cookies
XHLHttpRequest
和IE
的ActiveXObject
对象
# 1.4 小结
JavaScript是一种专与网页交互设计的脚本语言,由下列三个不同的部分组成:
- ECMAScript,有ECMA-262定义,提供核心语言功能
- 文档对象模型(DOM),提供访问和操作网页内容的方法和接口
- 浏览器对象模型(BOM),提供与浏览器交互的方法和接口。
JavaScript的这三个组成部分,在当前五个主要浏览器(IE、Firefox、Chrome、Safari和Opera)中都得到了不同程度的支持。
浏览器内核
- gecko,代表浏览器FireFox
- Presto,代表浏览器Opera
- WebKit,代表浏览器Safari
- Blink,代表浏览器Chrome
- Trident,代表浏览器IE、360安全浏览器、QQ浏览器
浏览器内核主要分成两部分:渲染引擎(layout engineer或RenderingEngine)和JS引擎
渲染引擎:负责取得网页的内容(HTML、XML、图像等等)、整讯息(例如加入css等),以及计算网页的显示方式,然后会输出至浏览器或打印机。浏览器的内核的不同对于网页的语法解释会有不同,所以渲染的效果也不相同。所有网页浏览器、电子邮件客户端以及其他需要编辑、显示网络内容的应用程序都需要内核。
JS引擎:解析和执行JavaScript来实现网页的动态效果。