相对于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章的初稿翻译工作,感谢他的付出。希望这本书也能给你们带来快乐。

《JavaScript面向对象编程指南》译者序的更多相关文章

  1. 《Python算法教程》译者序

    在计算机的世界中,算法本质上是我们对某一个问题或者某一类问题的解决方案.也就是说,如果我们想用计算机来解决问题的话,就必须将问题的解决思路准确而完整地描述出来,同时计算机也要能理解这个描述.这需要我们 ...

  2. python算法介绍:希尔排序

    python作为一种新的语言,在很多功能自然要比Java要好一些,也容易让人接受,而且不管您是成年人还是少儿都可以学习这个语言,今天就为大家来分享一个python算法教程之希尔排序,现在我们就来看看吧 ...

  3. Python快速教程 尾声(转)

    原文地址: http://www.cnblogs.com/vamei/p/3603046.html 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留 ...

  4. python快速教程-vamei

    2016年10月26日 12:00:53 今天开始着手python的学习,希望能高效快速的学完! Python基础(上)... 7 实验简介... 7 一.实验说明... 8 1. 环境登录... 8 ...

  5. Python 简明教程 ---10,Python 列表

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 程序 = 算法 + 数据结构 -- Nicklaus Wirth 目录 从这句话程序 = 算法 + ...

  6. Python快速教程 尾声

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 写了将近两年的Python快速教程,终于大概成形.这一系列文章,包括Python基 ...

  7. 改写《python基础教程》中的一个例子

    一.前言 初学python,看<python基础教程>,第20章实现了将文本转化成html的功能.由于本人之前有DIY一个markdown转html的算法,所以对这个例子有兴趣.可仔细一看 ...

  8. 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV

    这次博客园的排版彻底残了..高清版请移步: https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程: 给深度学习入门者的Python快速教程 - 基础篇 给深度 ...

  9. .Net程序员之Python基础教程学习----列表和元组 [First Day]

    一. 通用序列操作: 其实对于列表,元组 都属于序列化数据,可以通过下表来访问的.下面就来看看序列的基本操作吧. 1.1 索引: 序列中的所有元素的下标是从0开始递增的. 如果索引的长度的是N,那么所 ...

  10. 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇

    始终无法有效把word排版好的粘贴过来,排版更佳版本请见知乎文章: https://zhuanlan.zhihu.com/p/24309547 实在搞不定博客园的排版,排版更佳的版本在: 给深度学习入 ...

随机推荐

  1. HDU-4529 郑厂长系列故事——N骑士问题 状态压缩DP

    题意:给定一个合法的八皇后棋盘,现在给定1-10个骑士,问这些骑士不能够相互攻击的拜访方式有多少种. 分析:一开始想着搜索写,发现该题和八皇后不同,八皇后每一行只能够摆放一个棋子,因此搜索收敛的很快, ...

  2. Beautiful 疑问小记

    一.获取id和class的text() html = urlopen(real_url) bsObj = BeautifulSoup(html) h1 = bsObj.h1.get_text() co ...

  3. 带选择的sql简单用法

    一般写法: select * from itcast_topic order by (case type when 2 then 2 else 1 end ) desc ,postTime desc ...

  4. Selenium WebDriver中一些鼠标和键盘事件的使用

    转自:http://www.ithov.com/linux/133271.shtml 在使用 Selenium WebDriver 做自动化测试的时候,会经常模拟鼠标和键盘的一些行为.比如使用鼠标单击 ...

  5. CentOS7下安装FTP服务

    1.安装vsftp 1.1.安装vsftp,测试安装的vsftpd的版本是:vsftpd.x86_64 0:3.0.2-11.el7_2 yum -y install vsftpd 1.2.修改配置文 ...

  6. asp.net页面跳转sessionid会变

    今天发现在一个Asp.net站点中, 同一次登录, 不停刷新页面或者页面跳转, 此时后台Session的SessionID总是变化的. 创建一个页面,添加一个button,后台代码非常简单,如下   ...

  7. Jquery easyui-combobox 的一个BUG

    通过easyui-combobox的loadData方法,easyui-combobox可以实现一个带字符搜索的下拉框,如下图: 但是这个下拉框中的字符串如果包含一些特殊字符的时候,就会出现BUG,通 ...

  8. codeforces 451D Count Good Substrings

    题意:给定一个字符串,求有多少个奇数子串和多少偶数子串为 “回文串”   这边回文串很特殊之含有  ab  两种字母  而且  相邻的字母相同则消去一个  一直到不存在相邻的相同. 思路:  在这种串 ...

  9. loadrunner (一)如何查看分析、报告结果

  10. 学习笔记之 prim算法和kruskal算法

    ~. 最近数据结构课讲到了prim算法,然而一直使用kruskal算法的我还不知prim的思想,实在是寝食难安,于此灯火通明之时写此随笔,以祭奠我睡过去的数 据结构课. 一,最小生成树之prim pr ...