JavaScript简介

153 阅读3分钟

产生原因

JavaScript诞生于1995年。JavaScript问世之前,表单的输入验证是交给服务器端语言(如Perl)去负责的。由于当时的网络并不发达,绝大部分的因特网用户的速度大概是“28.8kbit/s”,和服务器进行一些复杂表单频繁数据交互时就会让用户产生极大的时间开销。试想,单击了提交按钮,等了30秒时间,服务器端返回的信息是有必填项没有填写......

Netscape 公司的Brendan Eich为了解决客户端的数据校验问题,开发了一种叫 LiveScript 的脚本语言。而当时Java正当火热之时,为了推广,将LiveScript 改名为 JavaScript。

而后,微软也推出了JScript,让自家的Internet Explorer搭载上线。

双脚本分裂的情况不符合Web跨平台的特性,于是脚本标准化问题被提上了议事进程。标准化由ECMA来引导完成。标准化的蓝本是基于Netscape公司的JavaScript 1.1,最后完成定义一种名为ECMAScript的脚本语言标准。

JavaScript的实现

笼统意义上的JavaScript其实不单单指的是Netscape的,它代指所有浏览器的脚本语言。而它的实现应包括3个部分。

  1. ECMAScript
  2. 文档对象模型(DOM)
  3. 浏览器对象模型(BOM)

1. ECMAScript

ECMAScript标准其实只定义一些语言基础。比如语法、类型、关键字等等。

2. 文档对象模型(DOM)

是HTML的API。DOM根据HTML生成一颗文档数,标签对应结点。DOM提供了操作这颗树的方法,通过DOM,JavaScript可以轻松增删改任何结点。比如说HTML定义了button这个标签,DOM定义了onClick的方法,让JavaScript对这个结点进行一些操作。可以理解为,HTML通过语义让我们知道有些什么内容,DOM则是让我们可以操作这些内容。DOM的标准是由W3C制定。

HTML5的新特性里面有新增标签svg、audio、media等等,HTML和DOM是分不开的,不可能只推出某个标签而没有功能(除非是早期的简单标签如< p >),HTML的标准貌似也是W3C去制定的,毕竟两者的关联太过密切。

3. 浏览器对象模型(BOM)

BOM,支持可以访问和操作浏览器窗口的对象模型,是各个浏览器的特征部分。因为在前期是没有对BOM的相关标准,毕竟自家浏览器我想加什么功能进JS里面都可以,只要我能实现它(HTML5把很多BOM功能纳入了规范)。它包括了navigator、location、screen对象以及弹出新窗口功能。

注: 可能会对ECMAScript、DOM、BOM之间的界限有些模糊。其实不用太过纠结界限,毕竟分类就只是分类而已。通俗点看就是JavaScript的实现一肯定要解释出基础语言部分,然后还有要实现和HTML的交互连接以及其他杂七杂八的功能(和浏览器相关的可能就分类到了BOM中)。所有都离不开解释,所以才有JavaScript是解释型语言。鄙人也有一个问题是:HTML5为什么会出websocket、localstorage、Geolocation等感觉和HTML没关的东西(既不是标签,也不是API),鄙人也没搞懂,感觉实际上HTML5不单单指的是HTML和DOM,它还包括了其他功能的标准化。所以,WEB应该大致分两个标准,一个是ECMAScript:对应常见的es几,和其他对应:HTML5或往后