2

列挙可能なプロパティxを持つオブジェクトpがあります。

var p = Object.create(Object.prototype, {
  x: {
    value: "frog",
    enumerable: true
  }
});

pを継承し、列挙不可能なプロパティでプロパティxをオーバーライドするオブジェクトを作成します

var o = Object.create(p, {
  x: {
    value: "bird",
    enumerable: false
  }
});

あなたはどう思いますか、プロパティxはoのfor ... inループに列挙されますか?

for (var n in o) {
  console.log(n);
}

ええと、ChromeとIE9ではそれが列挙されます(つまり、かなり奇妙だと思います)。FFでは、列挙されません。

どちらが正しい行動ですか?

完全な例を次に示します。http://jsfiddle.net/hnvsM/3/

4

2 に答える 2

5
于 2012-12-05T01:37:32.663 に答える
3

これは V8 の既知のバグです。これについてはかなり前からバグ報告がありました。

問題 705: 列挙不可能なプロパティが for-in から継承された列挙可能なプロパティをシャドウできない

于 2012-12-05T01:35:37.510 に答える