【发布时间】:2013-05-14 02:55:08
【问题描述】:
我正在开发一个使用大量“javascript”的项目。 我有很多“ajax”调用,它们总是返回一个“json”数组。 出于有用的原因,我创建了 Array 对象的两个原型(“in_array”函数和“shuffle”函数)。
自从我做了原型,我所有的“for in”循环都被打破了(两次显示“未定义”......) 我查看了 google 和 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;
}
【问题讨论】:
-
你是如何定义你的原型的?你的
for .. in循环怎么样?您是否添加了hasOwnProperty支票? (跳过原型)。不要在非框架代码中使用for或for .. in,写一个map函数。 -
不,我的目标是尽量不在我的所有循环中添加一些东西(在我的代码中有超过 50 个“for in”。
-
然后写一个map函数。
-
什么是地图功能?像 PHP 中的 array_map 一样?我们在 JS 中如何做?谢谢你:)
标签: javascript jquery loops prototype for-in-loop