Javascript hasOwnProperty是否会从for…in循环中返回false?

Javascript hasOwnProperty是否会从for…in循环中返回false?,javascript,Javascript,如果我这样做: 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。这避免了道格拉斯·克罗克福德所说

如果我这样做:

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。这避免了道格拉斯·克罗克福德所说的“深层挖泥船”

示例来自:

示例from-不显示
hasOwnProperty
何时可以返回false

下面是一个测试用例,它确实表明:

// From some library or earlier in your code
Object.prototype.xxx = "xxx";

// Your object
var data = { member: "member" };

for (var key in data) {
    if( data.hasOwnProperty(key) ) {
        alert(key); // alert("member")
    }
    else {
        alert(key); // alert("xxx")
    }
}

只有hasOwnProperty(“不存在”)将返回false。当属性是可枚举的,而不是“own”并继承时。您能给出一个示例吗?我不确定javascript中的继承属性是什么。当然,请查看Good call。应该提到原型遗传。
// From some library or earlier in your code
Object.prototype.xxx = "xxx";

// Your object
var data = { member: "member" };

for (var key in data) {
    if( data.hasOwnProperty(key) ) {
        alert(key); // alert("member")
    }
    else {
        alert(key); // alert("xxx")
    }
}