Jac*_*cob 4 javascript arrays iteration prototype-programming
我已经为数组对象创建了一个JavaScript扩展,如下所示:
Array.prototype.where = function (lamda) {
var results = [];
for (var i in this) {
if (lamda(this[i])) {
results.push(this[i]);
}
}
return results;
}
Run Code Online (Sandbox Code Playgroud)
当我使用for循环迭代数组时,如:
var myArray = [1,2,3,4];
for(var i in myArray){
alert(myArray[i]);
}
Run Code Online (Sandbox Code Playgroud)
...我的扩展也被列举了.
有任何想法吗?
此行为是设计使然.
for/ inloops迭代对象中的每个属性,包括从原型继承的属性.
您可以检查if (myArray.hasOwnProperty(i))以跳过继承的属性.
但是,您应该使用常规for循环.
Javascript的for/ inloop不是为了遍历数组.