《JavaScript面向对象编程指南》——第1章 引言1.1 回顾历史

    xiaoxiao2024-04-21  3

    本节书摘来自异步社区《JavaScript面向对象编程指南》一书中的第1章,第1.1节,作者: 【加】Stoyan Stefanov 译者: 凌杰 更多章节内容可以访问云栖社区“异步社区”公众号查看。

    第1章 引言

    众所周知,时下所流行的这些Web应用,例如Yahoo! Maps、Google Maps、Yahoo! Mail、My Yahoo!、Gmail、Digg以及YouTube等都有一些明显的共同特征,即:它们都是Web2.0时代的应用程序,都有非常丰富的人性化交互界面,而这往往意味着大量的JavaScript应用。事实上,JavaScript最初也只不过是一种内嵌于HTML语句中的单行式脚本语言。但如今已经今非昔比了,对于它今天所拥有的面向对象特性来说,无论是在可重用性方面,还是在可扩展性方面都已经足以支持我们去实现任何网站项目中的行为逻辑了。毕竟,对于今天的标准来说,任何一个符合规范的Web页面都应该包含以下三个要素:内容(HTML)、外观(CSS)和行为(JavaScript)。

    通常来说,JavaScript程序的运行必须要依赖于某个宿主环境。其中最常见的当然就是我们的Web浏览器了,但请注意,浏览器并不是JavaScript代码唯一的宿主环境。事实上,我们可以利用JavaScript来创建各种类型的插件工具、应用扩展以及其他形式的组件。总之,学习JavaScript语言是一件一举多得的事情,我们可以通过学习这种语言,来编写各种不同的应用程序。

    这本书将着重于介绍JavaScript语言本身,特别是其中的面向对象特性。我们会从零开始讲解这些内容,也就是说,读这本书无需具备任何的程序设计基础。另外,除了有一章内容是专门为Web浏览器环境而写的以外,本书其余部分介绍的都是JavaScript的一般特性,适用于任何支持该语言的执行环境。

    现在,让我们进入第1章的学习吧。首先,我们需要先来了解一下JavaScript背后的发展历程,而后我们才能逐步引入面向对象编程方面的基本概念。

    1.1 回顾历史

    起初,Web站点事实上只不过是一个静态的HTML文档集,这些文档之间仅依靠一些简单的超链接(hyperlinks)绑定在一起。但很快,随着Web业务的快速普及和增长,网站管理者越来越希望自己所创建的Web页面能处理更多的事情。例如,他们希望网站具有更丰富的用户交互能力,以便能完成一些简单的任务(比如验证表单之类),加强与服务器端的信息交互。那时候,他们有两种选择:Java applets(后来被证明失败了)和LiveScript。其中,LiveScript就是1995年由Netscape公司开发的程序设计语言。Netscape 2.0之后,它正式被更名为JavaScript。

    不久,这种对Web 页面中静态元素进行扩展的方式就在业界大放异彩,令其他的浏览器厂商也纷纷效仿,推出了自己的类似产品。例如,Microsoft公司随后就发布了支持JScript的Internet Explorer(IE)3.0。该语言在JavaScript的基础上引入了一些IE独有的特性。最终,为了使语言的实现更趋向于标准化,一个叫做ECMAScript(欧洲计算机制造商协会)的组织应运而生了。这才有了我们今天所看到的这份被叫做ECMA-262的标准文档。目前在业界广为流行的JavaScript也只是遵守该标准的一种实现而已。

    无论结果是好是坏,JavaScript在随后爆发的第一次浏览器大战(大约是在1996年到2001年间)中得到了迅速的普及。那时正值互联网发展的第一波繁荣期,主要由Netscape和Microsoft这两大浏览器厂商在争夺市场份额。在此过程中,他们不断地往各自的浏览器中添加新的特性和各种版本的JavaScript实现。但他们彼此之间又缺乏共同遵守的标准,这给JavaScript的开发带来大量的负面影响,也给开发人员带来巨大的痛苦。因为在这种情况下,我们通常只能针对某一个具体的浏览器来编写脚本。如果我们把在这个浏览器上开发的脚本拿到其他浏览器上测试,就会发现它们完全不能工作。与此同时,由于浏览器厂商都在忙于继续增加新的浏览器特性,以至于根本没能及时更新相应的工具,这导致了开发工具的严重滞后。

    尽管浏览器厂商引入的不兼容性使Web开发人员感到难以忍受,但这还只是问题的一个方面。而另一方面的问题则出在开发人员自己身上,他们在自己的Web页面中使用了太多的新特性,总是迫不及待地想引入浏览器提供的每一项新功能,以“加强”自己的页面。例如状态栏中的动画、闪烁的颜色、闪烁的文本、会摇晃的浏览器窗口、屏幕上的雪花效果、能跟踪对象的鼠标光标等,而这往往都是以牺牲实用性为代价的。这种滥用现象极大地损坏了JavaScript在业界的名声,以至于那些“真正的程序员”(这里特指那些具有更成熟的编程语言背景的开发人员,例如Java或C/C++程序员)对JavaScript根本不屑一顾,或者仅仅把它当做一种用于前端设计的玩具。

    出于上述原因,JavaScript语言在一些Web项目中遭到了强烈抵制。某些项目甚至完全拒绝在客户端上进行任何的程序设计,转而只信任他们自己可以掌控的服务器端。确实,在当时的情况下,也没有什么理由值得我们花费双倍的时间来为这些不同的浏览器设计项目,然后再花更多的时间去调试它们。

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)