2

我有一个对象p,具有可枚举的属性x

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 回答