修改数组原型会导致foreach的行为不同
Modifying array prototype causes foreach to behave differently
我注意到,每当我修改数组原型时,它都会改变foreach的行为。我创建了下面的例子,向你们展示我在做什么:
Array.prototype.x = 10;
for(var i in [1,2,3]){
alert(i);
}
这个例子显示了四个警报:"1","2","3"answers"x";
为什么这个代码给我4个警报?
如何修改数组原型而不干扰foreach ?
你需要定义你的属性为" non-enumerable ":
Object.defineProperty(Array.prototype, 'x', {
enumerable: false,
value: 10
});
下面是一个JSFiddle,它显示了正在运行的代码
相关文章:
- 如果数组仍在执行,async.forEach()将运行我添加到数组中的新元素
- 需要帮助比较数组内的值,使用forEach循环
- 敲除foreach数字数组
- 使用从forEach循环中提取的国家代码从数组中获取国家名称
- 在JavaScript中,用forEach乘以数组的所有元素
- 将 PHP 值 (ACF) 添加到 foreach 循环中的 Javascript 数组中
- 为什么“.forEach”适用于密集数组,而不适用于稀疏数组
- 具有未初始化数组的forEach
- 对可观察数组foreach的更新删除了格式化knockoutjs
- PHP和Ajax在回调和返回数组中使用foreach循环
- forEach的奇怪数组构造函数行为
- JSON对象中的数组属性通过foreach更新-更新所有键
- 如何在不选择模式配置参数的情况下,使用mongoose在MongoDB模式实例化中的关联数组/对象中执行foreach
- 在 Javascript 中使用 ForEach 填充数组对象时,我是否需要定义一个数组对象
- 为什么以下 forEach 数组循环未返回未定义
- Javascript Foreach 循环遍历对象数组
- 为什么当我使用 Angular 在 forEach 循环中时,我无法访问工厂中的数组
- 如何从 javascript 中的 foreach 循环中删除特定的数组元素
- forEach数组javascript不完整
- javascript foreach数组,并用逗号和空格分隔,显示为字符串