ESMAScript和JavaScript的关系

231 阅读3分钟

前言:在了解ESMAScript和JavaScript的关系之前,我们先来了解一下JavaScript的发展历史。

什么是JavaScript

JavaScript(简称“JS”) 是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript 基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、函数式编程范式。

JavaScript发展历史

  1. 1995年由Netscape公司创立,取名为LiveScript。后面因为与Sun公司合作,因此改名为JavaScript。
  2. 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 的顶层对象。

  1. 顶级对象是window
  2. 二级对象有以下几种
  • document: 表示浏览器窗口里的文档,提供了向窗口输出信息的方法
  • location: 表示窗口里文档的位置,其属性href用于客户端的页面跳转
  • navigation: 表示浏览器
  • history: 表示历史访问记录

还有一些其他的API

  • setTimeout和setInterval
  • XMLHttpReques使得发起异步HTTP请求成为可能
  • CSS对象模型将css规则抽象成对象
  • WebWorkers允许进行并行计算
  • WebSockets允许进行底层双向通信
  • Canvas 2D Context(canvas)元素的绘图API