首先将内置对象的原型链以及内置对象原型中的常用方法缓存在局部变量中
|
|
这样做的好处除了简洁代码之外,还有两个好处,首先是利于代码的压缩。而原生的对象原型无法进行压缩,e.g: Object.Protype压缩之后宿主就不认识了,但是objProto可以压缩为a,之后的调用也可以正常进行;然后是可减少在原型链中的查找次数(提高代码效率)。
再定义一组javascript原生支持的判断函数,若宿主环境(浏览器/nodejs)支持,则直接返回。
|
|
若不支持以上函数(es5之后才支持),则返回underscore自己写的判断函数。
- 是否为DOM
|
|
- 是否为数组Array
|
|
- 是否为对象Object
|
|
- 是否为布尔值Boolean
|
|
- 是否为arguments
|
|
- 是否为NaN
|
|
- 是否为undefined
|
|
- 是否有has指定key
|
|