jQuery源码浅谈系列---$.isPlainObject

jQuery.isPlainObject(obj)

 

   ----------测试参数对象是否是纯粹的对象通过“{}”或者“new Object”创建的

 

 

  参数obj--{Object}: 用于测试是否为纯粹的对象。

 

 

 

/*简单的列举几个测试的例子*/
jQuery.isPlainObject({});  //true
jQuery.isPlainObject(1);  //false
jQuery.isPlainObject("zhangyaochun"); //false

 

 

源码选自于1.4.2版本

 

 

var hasOwnProperty  = Object.prototype.hasOwnProperty,
      toString = Object.prototype.toString;
isPlainObject:function(obj){
    //!obj ---一定要是对象
    // toString.call(obj) !== "[object Object]"----因为IE,检测constructor
    //obj.nodeType ----避免不是DOM nodes
    //obj.setInterval ---排除window
   if(!obj || toString.call(obj) !== "[object Object]" ||obj.nodeType ||obj.setInterval){
            return false;
   }
   //是否是new fun()自定义对象
   //constructor是否是继承原型链
   //原型链是否有isPrototypeOf
   if(obj.constructor && !hasOwnProperty.call(obj,"constructor")
       && !hasOwnProperty.call(obj.constructor.prototype,"isPrototypeOf")){
         return false;
   }
   //判断是否有继承关系
   //自己的属性会被首先遍历
    var key;
    for(key in obj){}
    //直接看最后一项是未了加速遍历的过程
    return key === undefined || hasOwnProperty.call(obj,key);
}

你可能感兴趣的:(jquery源码,isPlainObject)