Javascript:检查对象是否具有属性
这里有几个关于如何检查对象中是否存在属性的答案 我总是用Javascript:检查对象是否具有属性,javascript,object,properties,Javascript,Object,Properties,这里有几个关于如何检查对象中是否存在属性的答案 我总是用 if(myObj.hasOwnProperty('propName')) 但我不知道这和我的想法有什么不同 if('propName' in myObj){ 它们几乎相等,区别在于hasOwnProperty不检查原型链,而in检查原型链 一个例子 var test = function() {} test.prototype.newProp = function() {} var instance = new test();
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
只返回“自己的属性”,即直接添加的属性,而不是添加到原型中的属性。是的,存在差异hasOwnProperty()
忽略随prototype
添加的属性和方法。我试着用例子来解释。例如,如果您有对象的原型
Object.prototype.something = function() {};
假设您有以下对象
var obj = {
"a" : "one",
"b" : "two"
};
和循环:
for ( var i in obj ) {
//if (obj.hasOwnProperty(i)) {
console.log(obj[i]);
//}
}
没有hasOwnProperty
时,它将输出一两个函数()
,而只有hasOwnProperty()
方法才会输出一两个
查看和演示之间的差异为什么不只是“if(myObj.propName)”?嘿,伙计们,谢谢-抱歉,没有找到提到的dup。