问题描述
在JavaScript中,如何检查某个特定的属性是否存在于对象中,如果存在则返回true
,不存在则返回false
。
解决方案
我们通常会检查对象的属性值是否为undefined
,以此来判断属性是否存在。但是,会漏掉一种情况——属性存在,并且其值刚好为undefined
:
var obj = { key: undefined };
obj["key"] != undefined // false, 但是属性存在
因此,我们应当使用in
操作符来检测:
"key" in obj // true, 不关心它所对应的值
另外,如果你只是想检测这个属性到底是对象本身的,而不是从原型上继承而来,可以使用hasOwnProperty
:
obj.hasOwnProperty("key"); // true