什么是JavaScript

历史回顾

  1. 1995年 网景公司+Sun公司 LiveScript —> JavaScript
  2. 1996年 微软 IE3 包含名为 JScript 的 JavaScript 实现
  3. 1997年 JavaScript 1.1 作为提案被提交给欧洲计算机制造商协会(Ecma) ECMAScript
  4. 1998年 浏览器均以 ECMAScript 作为自己 JavaScript 实现的依据

JavaScript实现

  • 核心(ECMAScript)
  • 文档对象模型(DOM)
  • 浏览器对象模型(BOM)

ECMAScript

ECMAScript,即 ECMA-262 定义的语言,并不局限于 Web 浏览器。
在基本的层面,它描述这门语言的如下部分

  • 语法
  • 类型
  • 语句
  • 关键字
  • 保留字
  • 操作符
  • 全局对象

DOM
  • 文档对象模型(DOM,Document Object Model)是一个应用编程接口(API),用于在 HTML 中使用扩展的 XML。DOM 将整个页面抽象为一组分层节点。HTML 或 XML 页面的每个组成部分都是一种节点,包含不同的数据。
  • DOM 通过创建表示文档的树,让开发者可以随心所欲地控制网页的内容和结构。使用 DOM API,可以轻松地删除、添加、替换、修改节点。
  • DOM 并非只能通过 JavaScript 访问,而且确实被其他很多语言实现了。不过对于浏览器来说,DOM 就是使用 ECMAScript 实现的,如今已经成为 JavaScript 语言的一大组成部分。
  • 除了 DOM Core 和 DOM HTML 接口,有些其他语言也发布了自己的 DOM 标准。
    • 可伸缩矢量图 (SVG)
    • 数学标记语言 (MathML)
    • 同步多媒体集成语言 (SMIL)

BOM
  • IE3 和 Netscape Navigator 3 提供了浏览器对象模型(BOM) API,用于支持访问和操作浏览器的窗口
  • BOM唯一一个没有相关标准的 JavaScript 实现。HTML5 以正式规范的形式涵盖了尽可能多的 BOM 特性,解决了很多与 BOM 相关的问题
  • BOM 主要针对浏览器窗口和子窗口(frame),通常将任何特定于浏览器的扩展都归在 BOM 的范畴。
    • 弹出新浏览器窗口的能力
    • 移动、缩放和关闭浏览器窗口的能力
    • navigator 对象,提供关于浏览器的详尽信息
    • location 对象,提供浏览器加载页面的详尽信息
    • screen 对象,提供关于用户屏幕分辨率的详尽信息
    • performance 对象,提供浏览器内存占用、导航行为和时间统计的详尽信息
    • 对 cookie 的支持
    • 其他自定义对象,如 XMLHttpRequest 和 IE 的 ActiveXObject

小结

  • JavaScript 是一门用来与网页交互的脚本语言,包含以下三个组成部分
    • ECMAScript:由 ECMA-262 定义并提供核心功能
    • 文档对象模型(DOM):提供与网页内容交互的方法和接口
    • 浏览器对象模型(BOM):提供与浏览器交互的方法和接口
  • JavaScript 的这三个部分得到了五大 Web 浏览器(IE、Firefox、Chrome、Safari 和 Opera)不同程度的支持。所有浏览器基本上对 ES5(ECMAScript 5)提供了完善的支持,而对 ES6(ECMAScript 6)和ES7(ECMAScript 7)的支持度也在不断提升。这些浏览器对 DOM 的支持各不相同,但对 Level 3 的支持日益趋于规范。HTML5 中收录的 BOM 会因浏览器而异,不过开发者仍然可以假定存在很大一部分公共特性。