一、JavaScript的起源
JavaScript因为互联网而生,紧随着浏览器的出现而问世。回顾它的历史,就要从浏览器的历史讲起。
此处我们使用时间线的形式,简单回顾这段辉煌的历史:
1990年底,欧洲核能研究组织,发明了万维网(World Wide Web)。
1992年底,美国国家超级电脑应用中心(NCSA),开发了第一个浏览器,Mosaic。
1994年10月,Mosaic通信公司成立,不久后改名为Netscape。开始开发面向普通用户的新一代的浏览器 Netscape Navigator。
1994年12月,Navigator发布了1.0版,市场份额一举超过90%。
Netscape公司很快发现,Navigator浏览器需要一种可以嵌入网页的脚本语言,用来控制浏览器行为(表单验证)。管理层对这种浏览器脚本语言的设想是:功能不需要太强,语法较为简单,容易学习和部署。
那一年,正逢Sun公司的Java语言问世,市场推广活动非常成功。Netscape公司决定与Sun公司合作,浏览器支持嵌入Java小程序(后来称为Java applet)。
但是,浏览器脚本语言是否就选用Java,则存在争论。后来,还是决定不使用Java,因为网页小程序不需要Java这么“重”的语法。但是,同时也决定脚本语言的语法要接近Java,并且可以支持Java程序。这些设想直接排除了使用现存语言,比如Perl、Python和TCL。
1995年,Netscape公司雇佣了程序员Brendan Eich开发这种网页脚本语言。
Brendan Eich有很强的函数式编程背景,希望以Scheme语言(函数式语言鼻祖LISP语言的一种方言)为蓝本,实现这种新语言。
1995年5月,Brendan Eich只用了10天,就设计完成了这种语言的第一版。它是一个大杂烩,语法有多个来源:
基本语法:借鉴C语言和Java语言。
数据结构:借鉴Java语言,包括将值分成原始值和对象两大类。
函数的用法:借鉴Scheme语言和Awk语言,将函数当作第一等公民,并引入闭包。
原型继承模型:借鉴Self语言(Smalltalk的一种变种)。
正则表达式:借鉴Perl语言。
字符串和数组处理:借鉴Python语言。
二、JavaScript的发展
为了保持简单,这种脚本语言缺少一些关键的功能,比如块级作用域、模块、子类型(subtyping)等等,但是可以利用现有功能找出解决办法。这种功能的不足,直接导致了后来JavaScript的一个显著特点:对于其他语言,你需要学习语言的各种功能,而对于JavaScript,你常常需要学习各种解决问题的模式。而且由于来源多样,从一开始就注定,JavaScript的编程风格是函数式编程和面向对象编程的一种混合体。
Netscape公司的这种浏览器脚本语言,最初名字叫做Mocha。
1995年9月改为LiveScript。
12月,Netscape公司与Sun公司(Java语言的发明者和所有者)达成协议,后者允许将这种语言叫做JavaScript。
这样一来,Netscape公司可以借助Java语言的声势,而Sun公司则将自己的影响力扩展到了浏览器。
之所以起这个名字,并不是因为JavaScript本身与Java语言有多么深的关系(事实上,两者关系并不深),而是因为Netscape公司已经决定,使用Java语言开发网络应用程序,JavaScript可以像胶水一样,将各个部分连接起来。当然,后来的历史是Java语言的浏览器插件失败了,JavaScript反而发扬光大。
1995年12月4日,Netscape公司与Sun公司联合发布了JavaScript语言。
1996年3月,Navigator 2.0浏览器正式内置了JavaScript脚本语言。
使得Web获得更高的关注,同时奠定了自己在浏览器届的霸主地位。
如果事情一直这样下去,那么NetScape可能依然是我们现代浏览器的霸主。
但是1996年8月互联网巨头微软公司进入浏览器领域,推出JScript,和NetScript公司开始争夺博主地位。
1996年11月,Netscape公司决定将JavaScript提交给国际标准化组织ECMA(European Computer Manufacturers Association)
希望JavaScript能够成为国际标准,以此抵抗微软。
1997年7月,ECMA组织发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript。这个版本就是ECMAScript 1.0版。
之所以不叫JavaScript,一方面是由于商标的关系,Java是Sun公司的商标,根据一份授权协议,只有Netscape公司可以合法地使用JavaScript这个名字,且JavaScript已经被Netscape公司注册为商标,另一方面也是想体现这门语言的制定者是ECMA,不是Netscape,这样有利于保证这门语言的开放性和中立性。因此,ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现。在日常场合,这两个词是可以互换的。
最终良性竞争意味着发展,随着互联网的日益更新,浏览器功能的日益完善,配合越来越多元化的JavaScript,给用户带来了前所未有的体验。
JavaScript在设计之初只是为了做表单验证。但是现如今,JavaScript已经成为了一门功能全面的编程语言,已经是WEB中不可缺少的一部分,如今的JavaScript是一门既简单又复杂的语言,说它简单是因为可能一小时就能学会,但是如果你要真正掌握它,可能就得需要个几年的时间了。
三、JavaScript的组成
当浏览器之间的争斗尘埃落定之后,各方之间也疲惫不堪,繁琐的兼容问题不断出现,用户已经开始反弹。
最终由1961年成立的ECMA(European Computer Manufacturers Association, 中文称欧洲计算机制造联合会)制定标准。这个标准就是ECMAScript。
虽然标准已经指定,但是因为JavaScript自身的特殊性,需要在浏览器中运行,并操作同样在浏览器中运行的网页(html),所以,最终JavaScript被分成了三大模块,分别是:
- ECMAScript:代表了语言的标准,规范。描述了语言的基本语法(var、for、if、array等)和数据类型(数字、字符串、布尔、函数、对象(obj、[]、{}、null)、未定义(undefined))。
- BOM:代表了浏览器。描述了浏览器窗口的操作和使用,被称为浏览器对象模型,抽象出的对象为window。因为多方浏览器之间并没有达成统一的约定,所以BOM缺乏标准,建立在ECMAScript标准基础上。
- DOM:代表了页面。描述了在浏览器中呈现给用户视觉显示的页面的操作和使用,是 HTML 和 XML 的应用程序接口(API)。DOM 将把整个页面规划成由节点层级构成的文档,HTML 或 XML 页面的每个部分都是一个节点的衍生物。被称为文档对象模型,抽象出的对象为document。标准化规范为W3C提供。
以上,欢迎留言交流。
网友评论