Se você está fazendo isso:
var temp = {a:5};
var array = [];
for(var i =0; i<5;i++){
var t = temp;
t.i = i;
array.push(t);
}
Você vai ter :
[{"a":5,"i":4},{"a":5,"i":4},{"a":5,"i":4},{"a":5,"i":4},{"a":5,"i":4}]
ao invés de:
[{"a":5,"i":0},{"a":5,"i":1},{"a":5,"i":2},{"a":5,"i":3},{"a":5,"i":4}]
Isso ocorre porque o Javascript usa links profundos quando você atribui um objeto a outra variável.
Minha escolha atual para clonagem superficial é a função clone Underscore.js .
É tão fácil quanto
var t = _.clone(obj);
Ou você pode iterar sobre o objeto original e copiar todas as chaves e valores.