代码之家  ›  专栏  ›  技术社区  ›  danp

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

  •  0
  • danp  · 技术社区  · 15 年前

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

    调用init后,projects.datas中的值如下所示。。输入“testdata”,而不是“item1”…“item2”。。。。我做错了什么。。?

    1 回复  |  直到 15 年前
        1
  •  10
  •   Christian C. Salvadó    15 年前

    您应该分两步构建对象,并使用括号表示法 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";