首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

jQuery源码浅谈系列-$.isPlainObject

2012-11-23 
jQuery源码浅谈系列---$.isPlainObjectjQuery.isPlainObject(obj)??? ----------测试参数对象是否是纯粹的

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);}

热点排行