我试图在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"....我做错了什么..?
您应该分两步构建对象,并使用括号表示法属性访问器:
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)
| 归档时间: |
|
| 查看次数: |
1343 次 |
| 最近记录: |