由列出的不可计数的属性遮蔽的属性
Property shadowed by unenumerable property listed?
我想知道以下内容。给出此代码:
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"
(jsbin演示)
从first
创建的所有对象显然都应该位于prop
属性。
但是,为什么从second
创建的对象在迭代时仍在其属性中显示prop
,请注意其值为undefined
。
我预计,当将可枚举描述符设置为false时,从这个原型继承的对象不应该再显示这些属性
编辑:当我用一个方法扩展Object.prototype时(无论出于什么原因)并将方法枚举描述符设置为false它的行为与预期的一样
有人能解释一下吗,也许我想错了方向
答案的Thx=)
这是V8 JavaScript引擎中的一个错误。我以前见过它。原型链中的可枚举属性即使被不可枚举属性遮蔽,也会被包括在内。
它已经有一个错误报告了。如果我能再次找到它,我会把它发布在这里 给…
问题705:不可枚举属性无法在中对从的继承的可枚举属性进行阴影处理
在Firefox中测试它,你会得到预期的结果。
相关文章:
- 为什么可以't我在JavaScript中获取导航器对象的属性计数
- 我们可以为Cesium中使用CZML绘制的多边形设置outlineWidth属性吗
- 用于显示onclick事件计数的可调整跨度标记
- 如何基于多个属性筛选记录并获取计数
- 如何在kinetic.js中向函数和事件名称中添加可计数变量
- 如何从具有动态可观察属性的淘汰对象中获取 JSON 字符串
- 为什么此可配置属性不可删除
- KO 绑定复选框:从代码更改“选中”属性,不更改可观察字段
- 更新挖空中可观察数组中项目的属性
- JSON.stringify未序列化可枚举属性
- 如何在运行时访问typescript类公共属性(调试)?只有构造函数和函数是可访问的
- 通过JQuery选择器设置CSS类属性:隐藏计数
- 在 JSON.parse() 之后保留属性属性(可写、可配置)
- 挖空JS只使复杂对象数组的一个属性可观察
- 使现有的不可写和不可配置属性可写和可配置
- 制造错误'的消息属性可枚举
- 你能在javascript中使属性可枚举但不可迭代吗?
- 为什么Object.defineProperty可以使ES6 Symbol属性可枚举
- JQuery:如何获取以相同ID字符开头的多个元素的特定属性类型计数
- 我如何使太多的属性可读模块模式和有任何替代方案