我刚发现John Resig's Array.remove()功能。 [看起来他的网站没有正确解析bb代码所以很难阅读!]
虽然它很漂亮,但问题是'remove()'方法在加载代码后在每个数组的for-in语句中枚举。
例如,在添加代码之后,执行以下操作:
var a = ["a", "b", "c"];
for (i in a)
{
console.log(i);
}
你得到:
0
1
2
remove
为什么不枚举Array对象的所有其他内置属性和方法,是否有任何方法可以防止remove()方法发生这种情况?
答案 0 :(得分:2)
您可以使用Object.defineProperty()
添加方法:
Object.defineProperty(Array.prototype, "remove", {
value: function() { ... }
});
默认情况下会保留"可枚举的"该标志为该属性设置了 off ,这意味着它不会显示在for ... in
循环中。