初看jquery源码的时候有一个方法引起了我的注意
jQuery.extend = ({
isAraay:Array.isArray || function(obj){
return jQuery.type(obj) === "array";
}
})
然后我们再去看jQuery方法的定义:
jQuery.extend = ({
type:function(obj){
if(obj == null)
return obj+";";
return typeof obj === "object" || typeof obj === "function" ?
class2type[ toString.call(obj) ] || "object" :
type obj;
}
});(简直太佩服写出jquery的这帮人了,在这里面type这个方法里面对与typeof的用法和对于返回值的理解简直堪称经典)
这里有出现了class2type这个对象(或者数组),再去看class2type的声明:
var class2type = {};
var toString = class2type.toString;
var hasown = class2type.hasOwnProperty;
看到这里我们又会产生疑问class2type这个对象中到底有什么属性,
好再看如下代码:
jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
class2type[ "[object " + name + "]" ] = name.toLowerCase();
});
这样就彻底明白了。至于jQuery.each的这样的写法,以及each方法的定义我想大家还是自己研究一下吧。