我正在尝试在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”....我做错了什么..?
答案 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";