私は次のことについて疑問に思っています。このコードを与える:
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=)