判断js对象是否具有某一种属性

96 阅读1分钟

1.hasOwnProperty()方法

每个 JavaScript 对象都有一个特殊的方法 object.hasOwnProperty('myProp'),它返回一个布尔值,指示是否object有一个属性myProp

const webkaka = {
  name: '卡卡网'
};
webkaka.hasOwnProperty('name');     // => true
webkaka.hasOwnProperty('realName'); // => false

webkaka.hasOwnProperty('name')返回true,因为属性name存在于webkaka对象中。

另一方面,webkaka没有realName属性,因此webkaka.hasOwnProperty('realName')返回false

方法名称hasOwnProperty()表明它查看对象自身的属性,自己的属性是直接在对象上定义的属性,而没有检测到继承的

const webkaka = {
  name: '卡卡网'
};
webkaka.toString; // => function() {...}
webkaka.hasOwnProperty('toString'); // => false

2.in运算符

'myProp' in object还确定myProp属性是否存在于object

我们可以使用in运算符来检测webkaka对象中的namerealName的存在:

const webkaka = {
  name: '卡卡网'
};
'name' in webkaka;     // => true
'realName' in webkaka; // => false

'name' in webkakatrue,因为webkaka有一个属性name

另一方面,'realName' in webkaka 结果为false,因为webkaka没有名为'realName'的属性。

hasOwnProperty()方法和in操作符之间的主要区别在于后者能检查对象自身和继承的属性:

const webkaka = {
  name: '卡卡网'
};
webkaka.toString; // => function() {...}
'toString' in webkaka;              // => true
webkaka.hasOwnProperty('toString'); // => false