[英]adding object on array updates previous object
我有关于将对象放在数组上的问题。 我这样做是为了记录活动的历史记录,所以我将每个对象都存储在一个数组中。 但是当我按下它时,先前的对象数据会用当前数据更新。 我不知道问题出在哪里? 我真的需要帮助。 谢谢。
我试图克隆这个对象:
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;
}
但在这里仍然没有运气。 :(
问题很可能是你一遍又一遍地推动同一个对象。 例:
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);
}
结果是一个数组,其中有十个对十个独立对象的引用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.