相对于Perl、Python等动态脚本语言来说,JavaScript确实是一门饱受误解的语言。对于译者这种从20世纪90年代末走过来的C++程序员来说,尤其如此。在那个年代,提起JavaScript总是会让人联想起各种花哨的小玩意儿、令人讨厌的恶作剧、浏览器之间的恶斗(例如IE与Netscape)等令人不太愉快的场景。总而言之,我长期以来对JavaScript的评价基本上是比较负面的,认为那不过是一个旁门左道的、不务正业的玩具罢了。
但随着AJAX技术在21世纪最初10年里的爆炸性发展,人们突然意识到JavaScript原来也可以给Web页面带来如此令人惊叹的用户体验,如果说在这之前,大部分Web页面还都只不过是一些被动供人阅读的电子刊物的话,如今它们已经真正成为了一个"实用程序",可以具有即时交互能力,可以接受个性化定制,等等。总之,您在桌面程序中能做到的,它基本都已经做到了。这的确出乎许多人的预料,包括我。
人们不禁要问了,似乎AJAX的核心XMLHttpRequest对象并不是一个新鲜事物呀,为什么直到最近才发现这种用法呢?这其中的原因是多样的。例如,如果没有宽带产业的发展,即便是发送JSON这种轻量级数据所带来的延时成本也是不可想象的。但无论如何,译者认为其中最重要的原因应该还是语言本身的标准化。如果没有ECMA-262这份标准文档,各大浏览器在客户端的表现完全不一致,我们就没有办法对Web应用实行MVC模式,以实现行为、外观、内容三者的分离。因为那样的话,开发成本显然是不能接受的。
而一旦我们在程序设计中使用了MVC模式,就意味着我们的设计思路已经进入面向对象的领域。面向对象思维在程序设计方法学上是具有划时代意义的。它标志着我们代码的重用目标由实现转向了接口,从而形成了模块化编程的趋势。这有利于我们随时更换不同的实现模块,以使得我们的代码应对变化的能力更强,也更容易维护。因而,各种成本的降低加速了这种编程方式的商业化。
JavaScript的面向对象特性不同于其他任何一种语言,从某种意义来说,它面向"对象"的程度比任何一种语言都要彻底(因为它差不多除了"对象"什么也没有)。这使得它更为灵活,更为动态化,也更具可挖掘性。现在,是时候重新学习JavaScript这门语言以及其面向对象特性了。希望这本书给你带去有用的信息。
翻译一本书从来都不是一个人的功劳,在此感谢人民邮电出版社的陈冀康编辑和微软亚洲研究院徐宁工程师在本书翻译过程中给予我的帮助与鼓励。特别是徐宁工程师还承担了本书第8章的初稿翻译工作,感谢他的付出。希望这本书也能给你们带来快乐。