在拿到《JavaScript忍者秘籍》一书的英文稿时,我如获至宝,不到一个礼拜便全部阅读了一遍,因为这才是我心目中的“圣经”。
虽然在市面上,几乎每个礼拜都有JavaScript相关的新书上市,而且几乎每一本都有不同的侧重点,或是实战练习,或是框架讲解,但却没有一本书籍对JavaScript的核心部分进行深入的讲解。
2012年的时候,我曾经零零散散整理了大约50篇关于JavaScript核心内容的文章,并发布到了博客园网站,这些文章虽然都有提及这些核心内容,但却没有很强的系统性。直到阅读完本书,我发现这才是我心目中的“圣经”,它不是规范的照搬,也不是示例的讲解,也不是jQuery的源码分析,而是作者结合开发jQuery时的经验以及其他专家多年来经验的总结。
本书没有对JavaScript的基本类型、操作符、对象等基本概念进行讲解,在介绍完基本的测试和调试知识后,就开始讲解JavaScript语言的最重要部分:函数、闭包以及原型。本书用了整整两章对函数进行讲解,从普通函数、匿名函数、递归函数以及函数表达式等的声明,到函数的调用,每个细节都深入地进行了讲解,同时穿插讲解了函数的缓存、重载、存储等方面的知识。在讲解闭包的时候,深入讲解了作用域和作用域链,通过对函数上下文的理解,我们又看到了偏应用函数、即时函数、函数包装等一系列与闭包相关的各种技巧和原理解释。而在原型讲解的时候,不仅讲解了基于原型和原型链的各种继承方式,同时也讲解了基于类(Class)风格的面向对象编程实现方式。
正则表达式、线程和定时器,这三项内容,不管在哪种语言学习中,都是最难以理解的部分。作者花了整整两章内容对其进行讲解,足以显示出对这些内容的重视,同时,作者在开发jQuery库的时候也是大量利用了这三项技术内容。
接下来的内容,是我在其他书上从来没有见过的,分别是代码求值、with语句、跨浏览器策略、HTML元素的Attribute、Property、Class等相关内容的深入讲解,这些内容是开发jQuery的基石,没有对这些内容的深入理解,作者也根本无法开发出这么受欢迎的jQuery库来。
最重要的部分通常都是放在最后,事件、DOM操作、CSS选择器引擎,这三部分虽然不属于JavaScript语言规范本身的部分,但却是前端开发中最重要的部分了,不深入理解这三部分,基本上做不出太好的前端程序。在事件方面,除了讲解了不同浏览器的冒泡和委托机制,作者还讲述了自己在jQuery库中是如何实现事件模块的,通过事件中枢管理系统提供一个高效的事件管理中心,从而对各种浏览器的各种事件做出实时的响应。在DOM操作章节,作者并没有提及jQuery中的attr、html、text、addClass等快捷方式的使用,而且通过各种基本知识,讲解如何实现复杂的DOM操作。在CSS选择器引擎方面,作者讲解了4种不同的选择器实现方式,通过逐一讲解,让我们了解到了每一种实现方式的优缺点,以及使用时的注意事项。
本书教授的是核心原理,而不是其他书中常见的用法示例。理解了原理,自然就可以一通百通,其他剩余的只不过是各种各样的技巧罢了。读完本书,再回过头来看看其他的JavaScript书籍,你的阅读体验自然就会完全不同了。
徐涛
2015年9月