0

Google Apps JS で。それぞれがプロパティとメソッドを持つオブジェクトの配列を実装したいと思います。プロパティの 1 つはオブジェクトの配列である必要があり、親配列のメソッドを使用してこの配列にアクセスできるようにしたいと考えています。

これまでのところ、私の最善の努力は次のとおりです。

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 に答える