<Javascript忍者秘籍>读后感

Posted by Leo Eatle on 2017-01-22

Javascript忍者秘籍也是大名鼎鼎的前端书籍之一了,这本书最大的噱头(褒义)就是它的作者是Jquery的作者: John Resig,Jquery有多么有名无需赘述,其优秀的拓展性、易用性、以及不俗的性能几乎统治了前端好几年。
比较可惜的是这本书从08年就开始写,一直到13年才写出来,而且后期作者有点烂尾了,还需要另外一个人去收拾残局。所以虽然这本书很多技巧都非常令人惊叹,但当进入到ES6时代,很多问题都已经有了成熟的解决方案。
并且最后翻译中文版又拖了两年,由徐涛翻译,很多人对徐涛的翻译评价不高。我感觉书的原作有很多比较活泼的语言没有翻译出来,确实比较可惜。

国外的技术书分两种,一种是工具型,行文像paper一样,非常严谨,但详细,还有一种是比较活泼的,本书就是这种,但是很难能翻译出那种原文独有的风格。

所以这本书有点脱离时代,但是大家公认这本书还是值得一读,如果放在五年前出版,一定会成为神作。
我也觉得这本书值得一读,这本书并不厚,作者以“忍者”的角度来阐述如何使用Javascript,他认为以Javascript的灵活性,我们必须像忍者一样使用它,作者蛮喜欢忍者的嘛。(不知道他是不是看火影忍者…)

那Javascript到底有什么样的特性可以成为忍者的武器呢?

  1. 函数式编程
    Javascirpt的世界里,函数是第一公民,函数即对象,所以我们要充分利用函数这个特性,作者对如何声明函数和使用函数进行了详细的说明,尤其是通过arguments参数的调整和apply的使用,可以做到面向对象的函数重载等功能,充分展现了javascript的灵活性

闭包,也是javascript的重点和难点,在这本书也讲的非常清楚,闭包其实是个双刃剑,自动打包作用域中的所有变量,如果能将每个闭包分清楚,可以用于隐藏私有变量,作者用气泡这个概念来让我们理解闭包

立即执行函数,也是非常重要的,它正是利用了闭包的特性,使得循环绑定事件监听函数成为了可能。

  1. 线程和定时器
    Javascirpt是单线程的,作者用一个线性的时间轴阐述了javascript遇到阻塞时会如何处理,当我们的定时器到时间了,主线程的javascript还没处理完,就只能排队等主线程处理完,如果之后还有定时器或者setInterval触发,也只能接着排队。

正因为如此,我们的定时器并不是真正精确的,有可能因为线程的堵塞而造成时间不精确。

作者利用定时器来分批处理大量DOM操作以减少线程阻塞,虽然这个操作并不值得推荐。另外作者还实现了一个中央定时器管理多个处理程序。