【发布时间】:2013-09-15 13:39:18
【问题描述】:
示例代码:
var functions = {
testFunction: function(){
console.log('test');
}
};
var functionsClones = [];
for(i in [1,2,3]){
var functionsClone = $.extend({}, functions);
functionsClone.testFunction.i = i;
functionsClones.push(functionsClone);
}
$.extend 是 jQuery 函数,它允许克隆对象而不是引用它。
现在让我们打印设置属性:
$.each(functionsClones, function(key, functionsClone){
console.log(functionsClone.testFunction.i);
});
它输出 3 次 '2' 而不是 0、1、2。这段代码有什么问题?
【问题讨论】:
-
不要使用
for ... in遍历数组。 -
这个示例代码是快速编写的,只是为了演示问题:)
标签: javascript jquery arrays loops object