0

在 Google Apps JS 中。我想实现一个对象数组,每个对象都有属性和方法。其中一个属性需要是一个对象数组,我希望能够通过使用父数组中的方法来访问这个数组。

到目前为止,我最大的努力是:

function myFunction () {
  var teamNo = 3;
  var allNames =["n1","n2","n3","n4"] ;
  var createnames = function () {
    var names = [];            
    for ( var j = 0; j <=3 ; j ++) {      
      (function (j) {
        var localNames = ["local1-names"+j,"local2-names"+j];
        names[j] = (function (player){
          return {
            namArr: localNames,
            name:   allNames[j],         
            addName: (function (player){
              localNames.push(player);
            }) (player),
             team:   teamNo            
          };         
        });
      }) (j);
    }
    return names;
  }
  var myname = createnames();
  var foo = myname[0]().namArr;
  var foo1 = myname[1]().namArr;
  myname[1]().addName("added");
  var foo2 = myname[1]().namArr;
  var foo3 = myname[2]().namArr;
  var debug = true;
}

当我添加代码来实现子数组时,我得到一个运行时错误,说 addName 不存在。

4

1 回答 1

2

您正在立即调用它:

addName: (function (player) {
    localNames.push(player);
})(player)

而不是分配它:

addName: function (player) {
    localNames.push(player);
}

此外,每个names[]函数都需要一个player,函数也是如此addPlayer(),这使得names[]参数无法访问。如果您不打算将任何内容传递给names[]函数,请删除该参数。

我建议使用命名函数而不是内联 IIFE。

于 2013-01-29T15:49:36.640 回答