判断对象是否存在某个属性


检测对象中属性的存在与否可以通过几种方法来判断。

1. 使用in关键字。

该方法可以判断对象的自有属性和继承(class extends 也就是 原型继承)来的属性是否存在。

var o={x:1};
"x" in o;            //true,自有属性存在
"y" in o;            //false
"toString" in o;     //true,是一个继承属性

2. 使用对象的hasOwnProperty()方法。

该方法只能判断自有属性是否存在,对于继承属性会返回false。

var o={x:1};
o.hasOwnProperty("x");       //true,自有属性中有x
o.hasOwnProperty("y");       //false,自有属性中不存在y
o.hasOwnProperty("toString"); //false,这是一个继承属性,但不是自有属性

3. 用undefined判断

自有属性和继承属性均可判断。此方法有局限性,不能区分属性值为undefined或是没有这个属性。

var o={x:1};
o.x!==undefined;        //true
o.y!==undefined;        //false
o.toString!==undefined  //true

4. for…in

遍历枚举属性判断key

for(let key in o){
    console.log(key == "x")
}

文章作者: iamfugui
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 iamfugui !
评论