现在的位置: 首页 > 综合 > 正文

JavaScript秘密花园 – hasOwnProperty,Functions,this

2013年05月14日 ⁄ 综合 ⁄ 共 615字 ⁄ 字号 评论关闭

hasOwnProperty

为了判断一个对象是否包含自定义属性而不是原型链上的属性,
我们需要使用继承自 Object.prototype 的 hasOwnProperty 方法。

注意: 通过判断一个属性是否 undefined 是不够的。
因为一个属性可能确实存在,只不过它的值被设置为 undefined

hasOwnProperty 是JavaScript中唯一一个处理属性但是不需要查找原型链的方法。

?
1
2
3
4
5
6
7
8
9
//
修改Object.prototype
Object.prototype.bar
= 1;
var

foo = {goo: undefined};
 
foo.bar;
//
1
'bar'

in

foo;
//
true
 
foo.hasOwnProperty('bar');
//
false
foo.hasOwnProperty('goo');
//
true

只有 hasOwnProperty 可以给出正确和期望的结果,这在遍历对象的属性时会很有用。 没有其它方法可以用来排除原型链上的属性,而不是定义在对象自身上的属性。

hasOwnProperty 作为属性(hasOwnProperty as
a property)

JavaScript 不会保护 hasOwnProperty 被非法占用,因此如果一个对象碰巧存在这个属性,
就需要使用外部的 hasOwnProperty 函数来获取正确的结果。

?
1
2
3
4

抱歉!评论已关闭.