【问题标题】:Javascript : Check if object has properties [duplicate]Javascript:检查对象是否具有属性[重复]
【发布时间】:2014-05-08 20:09:59
【问题描述】:

这里有几个答案如何检查对象中是否存在属性。

我一直在使用

if(myObj.hasOwnProperty('propName'))

但我想知道和

有什么不同
if('propName' in myObj){

【问题讨论】:

标签: javascript object properties


【解决方案1】:

它们几乎相等,区别在于hasOwnProperty 不向下检查原型链,而in 可以。

一个例子

var test = function() {}

test.prototype.newProp = function() {}

var instance = new test();

instance.hasOwnProperty('newProp'); // false
'newProp' in instance // true

FIDDLE

如上所述,Object.hasOwnProperty 仅返回“自己的属性”,即直接添加的属性,而不是添加到prototype 的属性。

【讨论】:

    【解决方案2】:

    是的,有区别。 hasOwnProperty() 忽略使用prototype 添加的属性和方法。我试着用例子来解释。例如,如果你有对象的原型

    Object.prototype.something = function() {};
    

    假设你有关注object

    var obj = {
        "a" : "one",
        "b" : "two"
    };
    

    然后循环:

    for ( var i in obj ) {
        //if (obj.hasOwnProperty(i)) {
            console.log(obj[i]);
        //}
    }
    

    如果没有hasOwnProperty,它将输出one two function(),而只有hasOwnProperty()方法one two

    查看First 和Second DEMOS 之间的区别

    【讨论】:

      猜你喜欢
      • 2013-12-26
      • 2017-10-09
      • 2017-01-09
      • 1970-01-01
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      • 2012-04-16
      • 2014-01-01
      相关资源
      最近更新 更多