完整的js
- 核心 ECMAScript
- 文档对象模型 DOM
- 浏览器对象模型 BOM
ECMAScript
- 不局限于浏览器,浏览器只是一个宿主环境
- 宿主环境提供ECMAScript的基准实现和与环境交互的扩展
- 其他宿主环境,比如nodejs,flash
不涉及浏览器,ECMAScript定义了什么?
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 操作符
- 全局对象
ECMAScript版本
- 第一版:本质和JS 1.1相同。删除了浏览器特定的代码。支持unicode标准。对象要和平台无关。
- 第二版:没有增减和改变任何特性,只做了编校工作。
- 第三版:更新了字符串处理,错误定义和数值输出。开始支持正则表达式,新的控制语句,try/catch异常处理。
- 第四版:真正的第四版,由于跳跃太大被放弃了。
- 第五版:2009年发布,增加了新功能,解析和序列化json对象,方便继承和高级属性定义的方法,引擎执行代码的严格模式。
- 第六版:2015年发布,开始支持,类,模块,迭代器,生成器,箭头函数,期约,反射,代理,和众多新的数据类型
- 第七版: 2016年发布,新增Array.prototype.includes和指数操作符
- 第八版:2017年发布,新增,async/await,getOwnPropertyDescriptors
- 第九版:2018年发布,修订异步迭代,promise finally,模版字面量
- 第十版:2019年发布,新增,Array.prototype.flat/flatMap, String.prototype.trimStart/trimEnd 等
ECMAScript符合性
- ECMAScript符合性:要成为ECMAScript实现,必须满足以下条件
- 支持所有的“类型,值,对象,属性,函数,以及程序语法和语义”
- 支持unicode 字符标准
ECMAScipt的支持
DOM
- 文档对象模型,document object model
- 是一个应用编程接口,使用dom api 操纵节点
- dom将整个页面抽象成一组分层节点
- 并非只能通过js来访问。对于浏览器来说,就是js来访问的。
DOM级别:DOM level1
- 1998年,DOM level1 成为W3C的推荐标准。有两个组成模块:DOM core和DOM HTML
- DOM core 提供了移动映射XML文档,从而方便访问和操作文档任意部分的方式
- DOM HTML 增加了特定于HTML的对象和方法
DOM级别:DOM level2
- 新增了以下模块,支持新的接口
- DOM视图:描述追踪文档不同视图的接口
- DOM事件:描述事件和事件处理的接口。
- DOM样式:描述处理元素CSS样式的接口。
- DOM遍历和范围:描述遍历和操作DOM树的接口。
DOM级别:DOM level3
- 增加了以统一的方式加载和保存文档的方式,验证文档的方式
- 目前W3C不再按照level来维护dom了,而是按照dom living standard来维护。成为dom4。
其他dom
- 其他语言也发布了自己的dom标准。
- 都是基于XML的,每一种都增加了该语言独特的dom方法和接口
- 可伸缩矢量图(SVG)
- 数学标记语言
- 同步多媒体集成语言
web浏览器对dom的支持
BOM
- 浏览器对象模型
- bom api 用来访问和操纵浏览器的窗口,可以操纵浏览器显示页面之外的部分
- html5 正式规范了很多bom特性
- bom主要是针对浏览器窗口和子窗口,但人们通常会把任何特定于浏览器的拓展归纳在bom范畴,比如:
- 弹出新浏览器窗口的能力
- 移动,缩放和关闭浏览器窗口的能力
- navigator对象,提供关于浏览器的信息
- location对象,提供浏览器加载页面的信息
- screen对象,提供用户分辨率的信息
- performance对象,提供浏览器内存占用,导航行为,时间统计的信息
- 支持cookie