for…in循环(JavaScript)中继承的不可枚举属性

for…in循环(JavaScript)中继承的不可枚举属性,javascript,internet-explorer,firefox,google-chrome,Javascript,Internet Explorer,Firefox,Google Chrome,我有一个对象p,具有可枚举属性x 我创建了一个从p继承的对象,并用一个不可枚举的属性覆盖属性x var o = Object.create(p, { x: { value: "bird", enumerable: false } }); 你认为呢,属性x会在o的for…in循环中被枚举吗 好吧,在Chrome和IE9中,它将被列举(我认为,这是相当复杂的);在FF中,它不会被枚举 哪一个是正确的行为 下面是一个完整的示例:这是V8中的一个已知错误。关于这个问题已经有一段

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

我创建了一个从p继承的对象,并用一个不可枚举的属性覆盖属性x

var o = Object.create(p, {
  x: {
    value: "bird",
    enumerable: false
  }
});
你认为呢,属性x会在o的for…in循环中被枚举吗

好吧,在Chrome和IE9中,它将被列举(我认为,这是相当复杂的);在FF中,它不会被枚举

哪一个是正确的行为


下面是一个完整的示例:

这是V8中的一个已知错误。关于这个问题已经有一段时间的错误报告了

根据,这肯定是chrome和ie9中的一个缺陷。我的

枚举对象的属性包括枚举 原型的特性,以及原型的原型,以及 以此类推,递归地但如果 因为原型链中以前的某个对象 具有同名的属性[[Enumerable]]的值 在确定属性是否为 原型对象被原型上的前一个对象遮挡 链子

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