我有关于将对象放在数组上的问题。我这样做是为了记录活动的历史记录,所以我将每个对象都存储在一个数组中。但是当我按下它时,先前的对象数据会用当前数据更新。我不知道问题出在哪里?我真的需要帮助。谢谢。
我试图通过这个克隆对象:
function deepCopy(obj) {
if (Object.prototype.toString.call(obj) === '[object Array]') {
var out = [], i = 0, len = obj.length;
for ( ; i < len; i++ ) {
out[i] = arguments.callee(obj[i]);
}
return out;
}
if (typeof obj === 'object') {
var out = {}, i;
for ( i in obj ) {
out[i] = arguments.callee(obj[i]);
}
return out;
}
return obj;
}
但这里仍然没有运气。 :(
答案 0 :(得分:2)
问题很可能是你一遍又一遍地推动同一个物体。例如:
var obj = {};
var arr = [];
for (var i = 0; i < 10; i++) {
obj.index = i;
arr.push(obj);
}
结果是一个数组,其中有十个对同一对象的引用。
每次都必须创建一个新的对象实例。例如:
var arr = [];
for (var i = 0; i < 10; i++) {
var obj = {};
obj.index = i;
arr.push(obj);
}
结果是一个数组,其中有十个对十个独立对象的引用。