如果我这样做:

for (var i in obj) {
    if (obj.hasOwnProperty(i)) console.log("Has property: " + i);
    else console.log("Doesn't have property: " + i);
}
obj.hasOwnProperty(i)会返回false吗?如果是这样,什么时候?

最佳答案

在循环中使用hasOwnProperty的想法是在循环继承的属性时解析为false。这避免了道格拉斯·克罗克福德(Douglas Crockford)所说的“深挖泥船”。

来自https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/hasOwnProperty的示例:

var buz = {
  fog: 'stack'
};

for (var name in buz) {
  if (buz.hasOwnProperty(name)) {
    alert("this is fog (" + name + ") for sure. Value: " + buz[name]);
  }
  else {
    alert(name); // toString or something else
  }
}

关于javascript - hasOwnProperty是否会从for…in循环内返回false?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12009896/

10-12 15:21