实现
Javascript包含
- ECMAscript: 即语言定义和规范
- DOM:Document Object Model, 文档对象模型
- BOM:Browser Object Model,浏览器对象模型
ECMAscript
ES6
ECMA-262 第 6 版,俗称 ES6、ES2015 或 ES Harmony(和谐版),于 2015 年 6 月发布。这一版包含了大概这个规范有史以来最重要的一批增强特性。
ES6 正式支持了
- 类
- 模块
- 迭代器
- 生成器
- 箭头函数
- 期约
- 反射
- 代理
- 众多新的数据类型
ES7
ECMA-262 第 7 版,也称为 ES7 或 ES2016,于 2016 年 6 月发布。
这次修订只包含少量语法层面的增强
- Array.prototype.includes
- 指数操作符
ES8
ECMA-262 第 8 版,也称为 ES8、ES2017,完成于 2017 年 6 月。
这一版主要增加了
- 异步函数(async/ await)
- SharedArrayBuffer
- Atomics API
- Object.values() /Object.entries() /Object. getOwnPropertyDescriptors()
- 字符串填充方法
- 明确支持对象字面量最后的逗号。
ES9
ECMA-262 第 9 版,也称为 ES9、ES2018,发布于 2018 年 6 月。
这次修订包括
- 异步迭代、剩余和扩展属性
- 一组新的正则表达式特性
- Promise finally()
- 模板字面量修订
ES10
ECMA-262 第 10 版,也称为 ES10、ES2019,发布于 2019 年 6 月。
这次修订增加了
- Array.prototype. flat()/flatMap()、
- String.prototype.trimStart()/trimEnd()、
- Object.fromEntries()方法,
- Symbol.prototype.description属性
- 明确定义了 Function.prototype.toString()的返回值
- 固定了 Array.prototype.sort()的顺序。
- 修订解决了与 JSON 字符串兼容的问题
- 定义了 catch子句的可选绑定。
ES11
即ES2020,新增:
- String 的 matchAll 方法
- 动态导入语句 import()
- import.meta
- export * as ns from ‘module’
- Promise.allSettled
- 一种新的数据类型:BigInt
- GlobalThis
- Nullish coalescing Operator
- Optional Chaining
ES12
即ES2021, 新增:
- String.prototype.replaceAll()
- Promise.any
- WeakRef
- &&=, ||= and ??=
- Numeric separators
DOM
DOM级别
- DOM0(事实不存在)
- DOM1: 主要映射文档结构
- DOM2: 引入了以下新模块
- DOM视图: 定义了跟踪不同文档视图的接口
- DOM事件: 定义事件, 事件处理
- DOM样式: 定义了基于CSS为元素应用样式的接口
- DOM遍历和范围: 定义了遍历和操作文档树的接口
- DOM3:
- 引入统一方式加载和保存文档的方法
- 新增验证文档的方法
- 扩展DOM核心, 支持XML1.0规范
- DOM4:w3c不再按照level来维护DOM,而是作为DOM living standard(可理解为 所有DOM为现实标准)维护,成为DOM4, 新增内容包括代替Muation Events的Mutation Observer 。详情可阅读此文章
BOM
浏览器由不同的厂家开发,BOM存在w3c标准和事实标准
主要针对浏览器窗口和子窗口(frame),人们通常把特定于浏览器的扩展归类在BOM中,如:
- 弹出新浏览器窗口的能力
- 移动、缩放、关闭窗口能力
- navigator对象
- location对象
- screen对象
- performance对象:提供内存,导航行为、时间统计等信息
- 对cookie的支持
- 其他自定义对象如 XHR对象 ActiveX对象
本章完
<br /> <br />