是否可以在JavaScript中将成员函数添加到数组类中,而不在for-in循环中显示?

是否可以在JavaScript中将成员函数添加到数组类中,而不在for-in循环中显示?,javascript,arrays,for-in-loop,extending-classes,Javascript,Arrays,For In Loop,Extending Classes,在我正在编写的一些代码中,我创建了一个JavaScript函数,该函数只应用于数组,我想我应该尝试将其添加为成员函数 我是这样加的: Array.prototype.myfunc = function(a){ ... } 这在很大程度上是可行的。我遇到的问题是for-in循环。它在循环中包含该函数。如果我随后键入此代码段: var bar, foo = ['alpha', 'bravo', 'charlie']; for(bar in foo) console.log(foo[bar]

在我正在编写的一些代码中,我创建了一个JavaScript函数,该函数只应用于数组,我想我应该尝试将其添加为成员函数

我是这样加的:

Array.prototype.myfunc = function(a){
    ...
}
这在很大程度上是可行的。我遇到的问题是for-in循环。它在循环中包含该函数。如果我随后键入此代码段:

var bar, foo = ['alpha', 'bravo', 'charlie'];
for(bar in foo) console.log(foo[bar]);
然后,输出沿以下线路:

alpha
bravo
charlie
function myFunc(a){
    ...
}

那么,除了避免在for-in循环中显示之外,还有什么方法可以做到这一点呢?

您可以使用它来创建任何对象的不可枚举属性,包括数组。请记住,在JavaScript中,数组只是带有数字键的对象,这就是为什么添加到数组中的属性会出现在forEach中。

可以用来创建任何对象的不可枚举属性,包括数组。请记住,在JavaScript中,数组只是带有数字作为键的对象,这就是为什么添加到数组中的属性会出现在forEach中。

您可以使用
Object.defineProperty
,但一如既往,不鼓励更改全局对象的原型。也不鼓励使用
for..in
获取数组的内容。改用
代替..of
。另请参见:您可以使用
Object.defineProperty
,但一如既往,不鼓励更改全局对象的原型。也不鼓励使用
for..in
获取数组的内容。改用
代替..of
。另请参见:“这就是为什么添加到它们的属性会出现在forEach中”-这完全是错误的…我想你的意思是“…在<代码>中为…在<代码>中”,而不是<代码>中。forEach()“这就是为什么添加到它们的属性会出现在forEach中”-这完全是错误的…我想你的意思是“…在<代码>中为…在<代码>中,而不是<代码>中()