Javascript语言精粹
Jun 27, 2015
在去北京的火车上一口气看完了。书不厚但是内容很厚实。对于上下文,构造方法等理解有很大的帮助。书的后面用了很大的空间写了javascript的糟粕,很奇怪但有效的学习方法~
- 伪类及函数化模式。前者通过
new
构造对象,后者通过函数构造对象。前者不利于私有属性的处理,后者通过闭包解决这个问题,同时有利于重写超类方法。 javascript 中,数组的实质是对象。数组原型为
Array
。通过如下方法判断数组// 在不同 window 或 frame 失效typeof "value" === "object" && value.constructor === ArrayObject.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加上圆括号解析,圆括号作为表达式的分组运算符,对包围在其中的表达式进行求值。能够准确地识别对象字面量。