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

dmp*_*dmp 1 javascript object

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

例:

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

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

CMS*_*CMS 7

您应该分两步构建对象,并使用括号表示法属性访问器:

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

                obj[toInject] = "testdata";
                this.datas[i] = obj;
        };
}
Run Code Online (Sandbox Code Playgroud)

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

如您所见,首先声明一个空对象文字:

var obj = {};
Run Code Online (Sandbox Code Playgroud)

然后你设置属性:

obj[toInject] = "testdata";
Run Code Online (Sandbox Code Playgroud)