在去北京的火车上一口气看完了。书不厚但是内容很厚实。对于上下文,构造方法等理解有很大的帮助。书的后面用了很大的空间写了javascript的糟粕,很奇怪但有效的学习方法~

  • 伪类及函数化模式。前者通过 new 构造对象,后者通过函数构造对象。前者不利于私有属性的处理,后者通过闭包解决这个问题,同时有利于重写超类方法。
  • javascript 中,数组的实质是对象。数组原型为 Array。通过如下方法判断数组

    // 在不同 window 或 frame 失效
    typeof "value" === "object" && value.constructor === Array
    Object.prototype.toString.apply(value) === '[Object Array]'
  • 数组的 length 为最大的下标加1
  • 调用的方式有:方法调用模式,函数调用模式,构造器调用模式,apply 调用模式
  • 方法调用中,this 指向调用该方法的对象;函数调用中,this 指向全局,这是语言设计的错误;构造器调用中,this 指向函数本身;apply 调用中,this 指向传入的第一个参数
  • 柯里化,常译为“局部套用”,是把多参数函数转换为一系列单参数函数并进行调用的技术。
  • typeof 奇怪的判断

    typeof null === "object"
    typeof NaN === "number"
  • parseInt 如果字符串的第一个字符是0,那么该字符串会基于八进制而不是十进制求值。可通过第二个参数声明基数(IE9 测试发现)

  • eval( ‘(‘ + json + ‘)’),javascript 的语法中,表达式语句不允许以花括号开始,会与块语句产生混淆。json加上圆括号解析,圆括号作为表达式的分组运算符,对包围在其中的表达式进行求值。能够准确地识别对象字面量。