hasOwnProperty
为了判断一个对象是否包含自定义属性而不是原型链上的属性,
我们需要使用继承自 Object.prototype
的 hasOwnProperty
方法。
注意: 通过判断一个属性是否 undefined
是不够的。
因为一个属性可能确实存在,只不过它的值被设置为 undefined
。
hasOwnProperty
是JavaScript中唯一一个处理属性但是不需要查找原型链的方法。
1
2
3
4
5
6
7
8
9
|
// Object.prototype.bar var
foo.bar; // 'bar'
// foo.hasOwnProperty( 'bar' ); // foo.hasOwnProperty( 'goo' ); // |
只有 hasOwnProperty
可以给出正确和期望的结果,这在遍历对象的属性时会很有用。 没有其它方法可以用来排除原型链上的属性,而不是定义在对象自身上的属性。
hasOwnProperty
作为属性(hasOwnProperty
as
a property)
JavaScript 不会保护 hasOwnProperty
被非法占用,因此如果一个对象碰巧存在这个属性,
就需要使用外部的 hasOwnProperty
函数来获取正确的结果。
1
2
3
4
|