gpt4 book ai didi

javascript - 使用原型(prototype)时停止 JavaScript 中的枚举

转载 作者:行者123 更新时间:2023-11-28 21:10:19 26 4
gpt4 key购买 nike

我目前正在尝试在 JavaScript 中使用原型(prototype)。

为了对此进行实验,我编写了一个函数,该函数有效地允许您将 where 子句放入数组:

Array.prototype.where=(function(){
var tmpArr=[],
success;

for (var x in this){
var success=true;
for (var i in arguments){
if (this[x][arguments[i][0]]!=arguments[i][1]){
success=false;
break;
}
}

if (success==true){
tmpArr.push(this[x]);
}
}
return tmpArr;
});

一个示例用途是:

arrayName.where([0, 'Fred'], [1, 'Bloggs']);

为了进行测试,这效果非常好。唯一的问题是你是否要运行

for (var x in someArrayHere){
console.log(someArrayHere[x]);
}

您获得数组的输出,但有一条记录代表您原型(prototype)化的函数。

据我所知,这是通过将函数设置为不可枚举来排序的,但我找不到任何解释如何停止它的文章。

我该怎么办?或者我每次都必须执行以下操作?

for (var x in someArray){
if (typeof tSch[x]!="object"){
}
}

最佳答案

for...in 构造枚举对象的所有属性(以及沿原型(prototype)链继承的属性)。当您将它与数组一起使用时,它将迭代 Array.prototype 的所有属性以及数组的元素。

使用普通的for循环来防止这种情况:

for(var x = 0; x < this.length; x++) {
//Do stuff
}

关于javascript - 使用原型(prototype)时停止 JavaScript 中的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8878456/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com