检查对象是否有属性

Javascript : Check if object has properties

本文关键字:属性 是否 对象 检查      更新时间:2023-09-26

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

我一直在用

if(myObj.hasOwnProperty('propName'))

但我想知道这与

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

它们几乎是相等的,不同的是hasOwnProperty不检查原型链,而in检查。

一个例子
var test = function() {}
test.prototype.newProp = function() {}
var instance = new test();
instance.hasOwnProperty('newProp'); // false
'newProp' in instance // true

小提琴

如前所述,Object.hasOwnProperty只返回"自己的属性",即直接添加的属性,而不是添加到prototype的属性。

是的,有区别。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的区别