本节书摘来自异步社区《JavaScript面向对象编程指南(第2版)》一书中的第1章,第1.1节,作者:【加拿大】Stoyan Stefanov著,更多章节内容可以访问云栖社区“异步社区”公众号查看
第1章 面向对象的JavaScript
自Web诞生以来,人们对于动态与响应式页面的需求便与日俱增。虽然静态的HTML文本页面在可读性方面或许会更好一些,特别是在有了CSS的辅助之后,页面排版显得更加美观了,但从另一方面来说,如果我们能让人们像在桌面上那样使用浏览器中的应用程序,事情或许会变得更有趣一些。如今,我们已能在浏览器中直接使用电子邮件、日历、电子银行、购物、绘画、游戏及文本编辑。这都要感谢一种Web编程语言—JavaScript,是它让这些Web应用成为了可能。然而,JavaScript最初也只不过是我们偶尔嵌入在HTML中的一小行代码,但如今它已经日趋成熟,并且被广泛使用。开发者们利用该编程语言的面向对象特性,实现了代码重用,并构建起了可伸缩的代码架构。
如果我们回顾一下Web开发领域这些年来的流行词汇—DHTML、Ajax、Web 2.0、HTML5,就会发现这些词背后的内涵始终没有变,依然是:HTML、CSS、JavaScript。其中HTML服务于内容,CSS服务于表现,而JavaScript则服务于行为。换句话说,JavaScript是让一切东西协同运作的粘合剂,有了它,我们才能在构建出丰富多彩的Web应用程序。
但事情远不止如此,JavaScript的应用领域并不仅仅局限于Web平台。
在JavaScript程序所能运行的多种宿主环境中,Web浏览器无疑是用得最普遍的那一种,但JavaScript也可以运行于其他环境。JavaScript可以应用于各式各样的小工具、应用扩展、以及其他软件,本书在后续章节中会一一提及。总而言之,将时间投资于学习JavaScript是一个明智的选择,因为一旦您掌握了JavaScript,就可以编写出各种适用于多种平台的不同应用,包括手机应用和服务器端程序。毕竟,如今我们要说JavaScript无所不在,那确实是一点都不夸张。
本书将从零开始,我们不会对读者的编程背景做任何假设,只需要您了解一点HTML常识即可。而且除了有一个章节用于探讨Web浏览器环境以外,本书其他部分都在纯粹地关注JavaScript语言本身。因此,您可以将在本书中学到的知识应用于所有的JavaScript环境。
下面,我们将从以下两点开始:
- 对JavaScript背后故事的简单介绍;
- 面向对象。
1.1 回顾历史
起初,Web页面不过是一些以静态HTML文档形式发布的科学出版物,这些文档之间只依靠一些简单的超链接(hyperlinks)绑定在一起。这可能有些难以置信,但最早的Web页面的确是不支持任何图片的,但这种情况不久便得到了改善。随后Web就越来越广受欢迎,规模也在不断增大,很快随着Web业务的快速普及和增长,网站管理者越来越希望自己所创建的Web页面能处理更多的事情。例如,他们希望网站能具有更丰富的用户交互能力,主要是能完成一些简单任务(如验证表单之类),以此节省与服务器端的信息交互。当时他们可以有两种选择:Java applets和LiveScript。其中,LiveScript是1995年由Netscape公司的Brendan Eich所开发的程序设计语言。Netscape 2.0发布之后,它被正式更名为JavaScript。
众所周知,Applets后来没落了,JavaScript则更加繁荣。这种通过在HTML中嵌入简短代码段来调整Web页面中其他静态元素的方式在网站管理者间大受好评。但没过多久,浏览器的竞争厂商Microsoft公司就发布了支持JScript的Internet Explorer(IE)3.0。JScript简直就是JavaScript的翻版,并且还在其继承之上引入了一些IE独有的特性。最终,为了使语言的实现更趋向于标准化,于是ECMAScript应运而生了。ECMA(欧洲计算机制造商协会)创建了ECMA-262标准,该标准脱离了浏览器和那些Web独有的特性,集中描述了JavaScript作为编程语言的核心部分。
大致上,JavaScript这个术语通常涵盖了以下3个部分。
- ECMAScript——语言的核心部分(即变量,函数,循环等等):这个部分独立于浏览器之外,并可以在其他环境中使用。
- 文档对象模型(DOM):它实际上是提供了一种与HTML、XML文档交互的方式。最初,JavaScript只能提供对页面上一部分元素的有限访问能力,主要集中在表单,超链接和图片这些元素上。后来权限逐渐被扩大,如今几乎所有元素都已经可以访问了。为此,万维网联盟(W3C)还专门创建了DOM标准。该标准是一种独立的(即它并不依赖于JavaScript)操作结构化文档的方式。
- 浏览器对象模型(BOM):这实际上是一个与浏览器环境有关的对象集合。原本没有任何标准可言,直到HTML5诞生之后,人们才定义了一些浏览器之间通用的对象标准。
虽然本书专门有一个章节用于阐述浏览器、DOM及BOM,但大部分内容还都在讲述JavaScript语言的核心部分,您在这里所学到的JavaScript知识基本都可应用于任何JavaScript执行环境。