前言:在了解ESMAScript和JavaScript的关系之前,我们先来了解一下JavaScript的发展历史。
什么是JavaScript
JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、函数式编程范式。
JavaScript发展历史
- 1995年由Netscape公司创立,取名为LiveScript。后面因为与Sun公司合作,因此改名为JavaScript。
- Ecma国际创建了ECMA-262标准,发展初期,JavaScript没有确定标准,1997年,在Ecma的协调下,统一标准:ECMA-262.完整的JavaScript实现包含三个部分:ECMAScript,文档对象模型,浏览器对象模型。
JavaScript和ECMAScript之间的关系
根据JavaScript的历史我们可以看出,ECMAScript是JavaScript的标准,而JavaScript是ECMAScript的一种表现。也就是说ECMAScript除了JavaScript之外,还有其他的表现。 换句话说,JavaScript的核心语言是ECMAScript。
JavaScript的组成部分
ECMAScript
ECMAScript定义了以下内容:
- 语法(解析规则,关键字,流程控制,对象初始化等等)
- 错误处理机制(throw,try...catch, 以及创建用户定义错误类型的能力)
- 类型(布尔值,数字,字符串,函数,对象等等)
- 全局对象。在浏览器环境中,全局对象就是window对象,但是ECMAScript只定义那些不特定于浏览器的API(如:parseInt, parseFloat, decodeURI, encodeURI等等)
- 基于原型的继承机制
- 内置对象和函数(JSON, Math, Array.prototype方法, 对象内省(自检,自我检查,introspection)方法等等)
- Strict mode
我们常常说的ES5, ES6指的就是ECMAScript5,ECMAScript6
文档对象模型(DOM)
文档对象模型(DOM)是用来表达HTML, XHTML及XML文档中的对象或与其进行交互的约定,它是跨平台的,并且与编程语言无关。通过调用DOM树上对象的方法可以操控这些对象。
它的核心是将HTML和XML文档抽象成对象,并在其上定义接口以及操纵这些对象的机制,DOM定义的元素有:
- DOM核心中定义了文档结构,树模型以及DOM事件架构,包括:Node, Element, DocumentFragment, Document, DOMImplementation, Event, EventTarget等等。
- DOM事件中包括对于DOM事件架构的一个不太严格的定义,以及一些特殊事件
- DOM元素遍历以及DOM范围对象等其他内容
浏览器对象模型(BOM)
对于嵌入网页的JS来说,宿主对象就是浏览器提供的对象,又称为浏览器对象。浏览器对象模型(简称BOM) 主要包括 windows、history、location和documnet等对象,window 对象是整个 BOM 的顶层对象。
- 顶级对象是window
- 二级对象有以下几种
- document: 表示浏览器窗口里的文档,提供了向窗口输出信息的方法
- location: 表示窗口里文档的位置,其属性href用于客户端的页面跳转
- navigation: 表示浏览器
- history: 表示历史访问记录
还有一些其他的API
- setTimeout和setInterval
- XMLHttpReques使得发起异步HTTP请求成为可能
- CSS对象模型将css规则抽象成对象
- WebWorkers允许进行并行计算
- WebSockets允许进行底层双向通信
- Canvas 2D Context(canvas)元素的绘图API