在数组上添加对象更新上一个对象

时间:2013-05-07 10:24:20

标签: javascript

我有关于将对象放在数组上的问题。我这样做是为了记录活动的历史记录,所以我将每个对象都存储在一个数组中。但是当我按下它时,先前的对象数据会用当前数据更新。我不知道问题出在哪里?我真的需要帮助。谢谢。

我试图通过这个克隆对象:

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;
}

但这里仍然没有运气。 :(

1 个答案:

答案 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);
}

结果是一个数组,其中有十个对十个独立对象的引用。