值是变量名而不是变量的内容

时间:2009-11-21 18:12:29

标签: javascript object

我正在尝试在javascript对象中动态初始化一些数据值,但是当我创建一个串联字符串来传递时,存储的实际键是变量名,而不是其中的值。

示例:

projects.init = function(){
    for (var i = this.numBoxes - 1; i >= 0; i--){
        var toInject = "item"+i;
        this.datas[i] = {toInject:"testdata"};
    };
}

然后在调用init之后,projects.datas中的值看起来像.. toInject“testdata”,而不是“item1”......“item2”....我做错了什么..?

1 个答案:

答案 0 :(得分:7)

您应该分两步构建对象,并使用括号表示property accessor

projects.init = function(){
        for (var i = this.numBoxes - 1; i >= 0; i--){
                var toInject = "item"+i,
                    obj = {};

                obj[toInject] = "testdata";
                this.datas[i] = obj;
        };
}

对象文字上的标签不能是表达式。

如您所见,首先声明一个空的object literal

var obj = {};

然后设置属性:

obj[toInject] = "testdata";