javascript中hasOwnProperty() 方法使用指南
概述
hasOwnProperty()方法用来判断某个对象是否含有指定的自身属性。
语法
obj.hasOwnProperty(prop)
参数
•prop
•要检测的属性名称。
描述
所有继承了Object.prototype的对象都会从原型链上继承到hasOwnProperty方法,这个方法可以用来检测一个对象是否含有特定的自身属性,和in运算符不同,该方法会忽略掉那些从原型链上继承到的属性。
示例
例1:使用hasOwnProperty方法判断某对象是否含有特定的自身属性
下面的例子检测了对象o是否含有自身属性prop:
o=newObject();o.prop='exists';functionchangeO(){ o.newprop=o.prop; deleteo.prop;}o.hasOwnProperty('prop'); //返回true changeO(); o.hasOwnProperty('prop'); //返回false
例2:自身属性和继承属性的区别
下面的例子演示了hasOwnProperty方法对待自身属性和继承属性的区别:
o=newObject();o.prop='exists';o.hasOwnProperty('prop'); //返回true o.hasOwnProperty('toString'); //返回false o.hasOwnProperty('hasOwnProperty'); //返回false
例3:遍历一个对象的所有自身属性
下面的例子演示了如何在遍历一个对象的所有属性时忽略掉继承属性,注意这里for..in循环只会遍历可枚举属性,这通常就是我们想要的,直接使用Object.getOwnPropertyNames()方法也可以实现类似的需求。
varbuz={ fog:'stack'}; for(varnameinbuz){ if(buz.hasOwnProperty(name)){ alert("thisisfog("+name+")forsure.Value:"+buz[name]); } else{ alert(name); //toStringorsomethingelse }}
例4:hasOwnProperty方法有可能被遮蔽
如果一个对象拥有自己的hasOwnProperty方法,则原型链上的同名方法会被遮蔽(shadowed):
varfoo={ hasOwnProperty:function(){ returnfalse; }, bar:'Herebedragons'};foo.hasOwnProperty('bar'); //始终返回false //如果担心这种情况,可以直接使用原型链上真正的hasOwnProperty方法 ({}).hasOwnProperty.call(foo,'bar'); //true Object.prototype.hasOwnProperty.call(foo,'bar'); //true
以上就是本文所述的全部内容了,希望大家能够喜欢。