1995 年,我在 Netscape 发明 JavaScript 的时候,并没有想到它日后能成为互联网上使用最广的编程语言。我只知道自己时间有限,要尽快写出一个“最小可发布的”版本。正因为如此,我将它写得尽量可扩展,自全局对象以下都可以修改,甚至连基础级的元对象协议钩子(如与 Java 方法同名的 toStringvalueOf)也可以修改。

抛开其不断演进和越来越流行不说,JavaScript 始终受益于一种递进的、务实的教学方法,即“要事先行”。我认为这与匆忙设计和故意为之的可扩展性有着必然的联系。我重度使用了函数和对象这两个核心元素。因此,程序员可以将它们作为通用构造,花式地构建各种工具,最终造出一把锋利的“瑞士军刀”。而对学生来说,这意味着他们必须了解各种工具都能解决哪些任务,以及如何恰如其分地运用这些工具。

我感觉 Netscape 就像一阵旋风,相信 1995 年的那批同事也都有同感。那一年,Marc Andreessen 在路演时反复强调“Netscape+Java 会灭掉 Windows”,借与微软竞争而迅速实现了 IPO。Java 是正统编程语言、老大哥、“蝙蝠侠”,而 JavaScript 只是一个小兄弟、“助手罗宾”、小小的脚本语言。

但在编写第一版(代号 Mocha)时我就知道,JavaScript(而不是 Java)会与 Netscape 浏览器以及我同时创造的文档对象模型深度绑定。Netscape 与 Sun 或者浏览器与 JVM 的界限是无法跨越的,Java 只能作为插件嵌入。

因此我当时就有一种预感,JavaScript 要么会随时间的推移慢慢走向成功,要么会因为某些原因迅速消亡。记得我的好友兼室友 Jeff Weinstein 问我后 20 年干什么时,我说:“要么开发 JavaScript,要么完蛋。”那时,我就感觉好像欠了 JavaScript 用户一屁股债。这种感觉源于我在极短时间和管理层严令“看起来要像 Java”的双重限制下,选择了“双面瑞士军刀”这种设计。

“模块化 JavaScript”(Modular JavaScript Series)这套书与我循序渐进和直观明了的教学理念不谋而合,先从浅显易懂的代码示例讲起,逐步扩展到设计模式,再到完整的基于模块的应用构建。这套书匠心独运,专门探讨了有关测试的最佳实践和部署 JavaScript 应用的高超技术。说这套书是 O'Reilly 出版公司“JavaScript 图书”这顶王冠上又一颗璀璨的明珠一点也不为过。

看到尼古拉斯为此付出的努力,我感到非常欣慰,因为这本书一看就能给 JavaScript 程序员耳目一新的感觉。我第一次见到尼古拉斯是在巴黎的一次晚宴上,当时对他有了一点了解,之后就是线上交流。他写的东西特别实用,而且能够体谅 JavaScript 初学者,同时也非常幽默。这也促使我审阅了这本书的草稿。相信最终付梓时,拿到手的成品会更容易阅读,也更有意思。建议你好好读一读这本书,从中发现对自己有用的东西,进而真正拥抱 JavaScript,最终致力于为所有人开发更好的 Web 应用。

Brendan Eich

JavaScript 之父,Brave 软件公司 CEO 和联合创始人

目录