我正在开发一个使用大量“javascript”的项目。我有很多“ajax”调用,它们总是返回一个“json”数组。出于有用的原因,我创建了 Array 对象的两个原型(“in_array”函数和“shuffle”函数)。
因为我做了原型,我所有的“for in”循环都被打破了(两次显示“未定义”......)我查看了谷歌和stackoverflow,我现在知道我的错误了。当然,如果我删除我的原型,“未定义”就会消失。
但是,我找不到我所有的答案。
首先,我看到很多时候,使用“for in”循环是不好的,为什么?
我也使用“PHP”或“python”进行开发,而且我喜欢“for in”或“foreach”循环。
其次,我有很多“for in”循环,老实说,我更喜欢改变我的原型,而不是改变我的循环。将我的原型切换到正常功能并保持“for in”循环是否很脏?
第三,我读到 JQuery 可以纠正这个错误。我的项目确实有 JQuery,解决方案是什么(我只读到 JQuery 可以纠正这个问题,而不是如何纠正)。
谢谢,
编辑:我的原型代码:
// FONCTIONS ARRAY
Array.prototype.shuffle = function () {
for (var i = this.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var tmp = this[i];
this[i] = this[j];
this[j] = tmp;
}
return this;
}
Array.prototype.in_array = function (needle) {
for(var i = 0; i < this.length; i++) {
if(this[i] == needle)
return true;
}
return false;
}