Javascript Array.remove()作者John Resig - 为什么在for-in语句中枚举?

时间:2016-11-03 23:33:48

标签: javascript arrays methods properties

我刚发现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()方法发生这种情况?

Here's a jsfiddle...

1 个答案:

答案 0 :(得分:2)

您可以使用Object.defineProperty()添加方法:

Object.defineProperty(Array.prototype, "remove", {
  value: function() { ... }
});

默认情况下会保留"可枚举的"该标志为该属性设置了 off ,这意味着它不会显示在for ... in循环中。