Object.prototype.hasOwnProperty()

  • Post author:
  • Post category:其他




hasOwnProperty()


方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性(也就是,是否有指定的键)。


描述

所有继承了

Object

的对象都会继承到

hasOwnProperty

方法。这个方法可以用来检测一个对象是否含有特定的自身属性;和

in

运算符不同,该方法会忽略掉那些从原型链上继承到的属性。


备注

即使属性的值是

null



undefined

,只要属性存在,

hasOwnProperty

依旧会返回

true

o = new Object();
o.propOne = null;
o.hasOwnProperty('propOne'); // 返回 true
o.propTwo = undefined;
o.hasOwnProperty('propTwo'); // 返回 true


示例


使用 hasOwnProperty 方法判断属性是否存在

下面的例子检测了对象

o

是否含有自身属性

prop

o = new Object();
o.hasOwnProperty('prop'); // 返回 false
o.prop = 'exists';
o.hasOwnProperty('prop'); // 返回 true
delete o.prop;
o.hasOwnProperty('prop'); // 返回 false


使用 hasOwnProperty 作为属性名

JavaScript 并没有保护

hasOwnProperty

这个属性名,因此,当某个对象可能自有一个占用该属性名的属性时,就需要使用外部的

hasOwnProperty

获得正确的结果:

var foo = {
  hasOwnProperty: function() {
    return false;
  },
  bar: 'Here be dragons'
};

foo.hasOwnProperty('bar'); // 始终返回 false

// 如果担心这种情况,
// 可以直接使用原型链上真正的 hasOwnProperty 方法
({}).hasOwnProperty.call(foo, 'bar'); // true

// 也可以使用 Object 原型上的 hasOwnProperty 属性
Object.prototype.hasOwnProperty.call(foo, 'bar'); // true



版权声明:本文为ping_lvy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。