检测对象中属性的存在与否可以通过几种方法来判断。
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")
}