私は次のことについて疑問に思っています。このコードを与える:
function displayprops(obj, name) {
console.log(name+":");
for(var prop in obj)
console.log(prop + ": " + obj[prop]);
}
var first = {prop: {}};
displayprops(first, "first"); // "prop: [object Object]"
var second = Object.create(first);
Object.defineProperty(second,"prop",{
enumerable:false
});
displayprops(second, "second"); // "prop: undefined"
から作成されたすべてのオブジェクトは、first明らかに
propプロパティを継承する必要があります。
secondしかし、から作成されたオブジェクトが反復処理されたときに、プロパティにが表示されるのはなぜですか。propその値は。であることに注意してくださいundefined。
列挙可能な記述子をfalseに設定すると、このプロトタイプから継承するオブジェクトは、これらのプロパティを表示されなくなるはずです。
編集:Object.prototypeを(何らかの理由で)メソッドで拡張し、メソッドの列挙可能な記述子をfalseに設定すると、期待どおりに動作します
誰かがこれを説明できますか、多分間違った方向に考えています
答えのThx=)