我有一个动态创建的字符串列表,称为“变量”。我需要使用这些字符串作为JavaScript对象数组的实例变量。
var objectsArr = [];
function obj(){};
for (var i=0; i<someNumberOfObjects; i++ ) {
...
objectsArr[i] = new Object();
for (var j=0; j<variables.length; j++) {
objectArr[i].b = 'something'; //<--this works, but...
//objectArr[i].variables[j] = 'something'; //<---this is what I want to do.
}
}
注释掉的行显示了我想要做的事情。
答案 0 :(得分:9)
您可以使用括号语法按名称操作属性:
objectArr[i][variables[j]] = 'something';
换句话说,从索引objectArr
的{{1}}获取对象,然后找到名称为i
的字段,并将该字段的值设置为variables[j]
。
一般而言,给定对象'something'
:
o
您可以按名称设置属性:
var o = {};
以通常的方式访问它:
o['propertyName'] = 'value';
答案 1 :(得分:0)
使用括号表示法。这将完成它:
var objectsArr = [], ii, jj;
function Obj() {}
for(ii = 0; ii < someNumberOfObjects; ii += 1) {
objectsArr[ii] = new Obj();
for (jj = 0; jj < variables.length; jj += 1) {
objectArr[ii][variables[jj]] = 'something';
}
}
补充说明:
Obj
这样的构造函数应该以大写字母开头,表示它们应该与new
关键字一起使用。但在这种情况下,除非您需要对象具有非Object原型,否则您可以使用普通对象文字(objectsArr[ii] = {};
)。