一个Js对象链接?

时间:2014-08-17 18:58:17

标签: javascript closures

我想用不同的键'编号'来自arr的值;

var arr = [1,2,4], 
    q = {}, 
    a = { number : null };

for (i=0;i<3;i++) {

       q[i] = a;
       q[i].number = arr[i];
}

但是有了这个我有3个相同的对象。

我试图制作像

这样的闭包
var arr = [1,2,4], 
    q = {}, 
    a = { number : null };

for (i=0;i<3;i++) {
       (function(number) {
           q[number] = a;
           q[number].number = arr[number];
       })(i)

}

但结果是一样的。我做错了什么?

1 个答案:

答案 0 :(得分:0)

您已经定义了对象a。当您将a写入q[i]时,它只会写入指向此对象的指针。固定代码:

var arr = [1,2,4],
    q = {};

for (i = 0; i < 3; i++) {
    q[i] = {};
    q[i].number = arr[i];
}

如果在这里清理:

var array = [1, 2, 4],
    q = Object.create(null);

array.forEach(function(value, index) {
    $.extend(q[index], {
        number: value
    });
});

.forEach()