动态创建JavaScript对象的实例字段

时间:2011-09-06 03:14:05

标签: javascript

我有一个动态创建的字符串列表,称为“变量”。我需要使用这些字符串作为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.
    }       
}

注释掉的行显示了我想要做的事情。

2 个答案:

答案 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';
    }       
}

补充说明:

  • Javascript没有块范围,因此您必须有两个单独的循环变量。
  • 按照惯例,像Obj这样的构造函数应该以大写字母开头,表示它们应该与new关键字一起使用。但在这种情况下,除非您需要对象具有非Object原型,否则您可以使用普通对象文字(objectsArr[ii] = {};)。