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对象中的name和realName的存在:
const webkaka = {
name: '卡卡网'
};
'name' in webkaka; // => true
'realName' in webkaka; // => false
'name' in webkaka 为true,因为webkaka有一个属性name。
另一方面,'realName' in webkaka 结果为false,因为webkaka没有名为'realName'的属性。
hasOwnProperty()方法和in操作符之间的主要区别在于后者能检查对象自身和继承的属性:
const webkaka = {
name: '卡卡网'
};
webkaka.toString; // => function() {...}
'toString' in webkaka; // => true
webkaka.hasOwnProperty('toString'); // => false