jquery中的class2type

初看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方法的定义我想大家还是自己研究一下吧。

转载于:https://www.cnblogs.com/kangccb/p/4387225.html

你可能感兴趣的:(jquery中的class2type)