hasOwnProperty表示是否有自己的属性。这个方法会查找一个对象自身是否有某个属性,但是不会去查找它的原型链。通常一般项目中用到的不多,它给我个人感觉作用有点类似闭包(防止变量污染),当然,我这么说是根据我自身使用的感受来阐述的,下面看看基本用法和一个项目中小的示例。
基本用法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| var obj = {
a : 1,
fn : function(){
},
c :{
d : 5
}
};
console .log(obj .hasOwnProperty ('a')); // true
console .log(obj .hasOwnProperty ('fn')); // true
console .log(obj .hasOwnProperty ('c')); // true
console .log(obj .c .hasOwnProperty ('d')); // true
console .log(obj .hasOwnProperty ('d')); // false, obj对象没有d属性
var str = new String ();
// split方法是String这个对象的方法,str对象本身是没有这个split这个属性的
console .log(str .hasOwnProperty ('split')); // false
console .log(String .prototype .hasOwnProperty ('split')); // true |
示例
for...in循环对象的所有枚举属性,可以使用hasOwnProperty()方法来忽略继承属性。因为大家知道,对象之间赋值是引用关系,那么我在修改这个对象时候,并不希望修改掉了链上的其他属性。
1 2 3 4 5 6 7 8 9 10 11 12
| var buz = {
fog : 'stack'
};
for (var key in arr ) {
if (this .hasOwnProperty (key) { //window对象自身有没有全局的这个key变量,有就修改
this [key] = arr [key]+1
}
else {
alert (name ); // 自身不存在这个属性
}
} |
小结
这个方法主要是让自己的代码更加健壮吧,平时你可能用不上,但如果使用后,可能让你的代码更加健壮利于维护。
「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」
共 0 条评论关于"hasOwnProperty判断对象自身某个属性是否存在"
最新评论