读书人

jQuery源码浅谈系列-$.isPlainObject

发布时间: 2012-11-23 00:03:43 作者: rapoo

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

jQuery.isPlainObject(obj)

?

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

?

?

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

?

?

?

/*简单的列举几个测试的例子*/jQuery.isPlainObject({});  //truejQuery.isPlainObject(1);  //falsejQuery.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);}

读书人网 >网络基础

热点推荐