Javascript 在数组中循环时的原型对象?
在数组中循环时,我会得到令人困惑的结果 填充数组看起来像Javascript 在数组中循环时的原型对象?,javascript,jquery,arrays,prototype,Javascript,Jquery,Arrays,Prototype,在数组中循环时,我会得到令人困惑的结果 填充数组看起来像 var tables = []; // ... // t is table as jQuery object tables[t.attr('id')] = t; 稍后,当循环表数组时,我得到的元素比实际添加的多一个。当另一个对象到达t.removeClass()时,程序中断 Visual Studio调试器将另一个对象描述为“克隆”,这是原型对象/属性(?)的第一个方法 我已经读到,每个javascript对象都有一个prototype
var tables = [];
// ...
// t is table as jQuery object
tables[t.attr('id')] = t;
稍后,当循环表数组时,我得到的元素比实际添加的多一个。当另一个对象到达t.removeClass()时,程序中断
Visual Studio调试器将另一个对象描述为“克隆”,这是原型对象/属性(?)的第一个方法
我已经读到,每个javascript对象都有一个prototype属性,但为什么prototype在这里被视为一个对象?注意:如果您的id不是数字,那么您不需要数组,请看另一个答案 若要在数组上循环,请不要在构造中使用..的
for
使用
或者使用jQuery:
$.each(tables, function(_,t){
t.removeClass(...);
});
旁注:似乎有人对本机数组类的原型进行了不充分的充实。是的。这样做并使属性可枚举更糟糕。您应该考虑删除或修复所使用的库。 < P>表的声明应该是:
var tables = {};
能否显示填充数组的代码?tables.length为0,因为它是关联数组。tables.forEach也不起作用。@user2558051那么您根本不应该使用数组。请看eggward的答案。看起来OP应该使用对象作为映射,而不是数组。如果您稍微解释一下,就会得到我的+1。因为您要做的是将t.attr('id')关联到您的t对象。数组的行为不是这样的。
for (var i=0; i<tables.length; i++) {
var t = tables[i];
t.removeClass(...);
}
tables.forEach(function(t) {
t.removeClass(...);
});
$.each(tables, function(_,t){
t.removeClass(...);
});
var tables = {};