唯品秀前端博客
立即登录 马上注册

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); // 自身不存在这个属性
    }
}

小结

这个方法主要是让自己的代码更加健壮吧,平时你可能用不上,但如果使用后,可能让你的代码更加健壮利于维护。

本站所有文章、图片、资源等如无特殊说明或标注,均为来自互联网或者站长原创,版权归原作者所有;仅作为个人学习、研究以及欣赏!如若本站内容侵犯了原著者的合法权益,可联系我们进行处理,邮箱:343049466@qq.com
赞(3) 打赏
谢谢你请我吃鸡腿*^_^*

支付宝扫一扫打赏

微信扫一扫打赏

标签:

上一篇:

下一篇:

相关推荐

0 条评论关于"hasOwnProperty判断对象自身某个属性是否存在"

表情

最新评论

    暂无留言哦~~