-1

コードを整理するのにいくつか問題があります。

これが私がやりたいことの例です:

var Test = {
  old: [
    get: function(who, when){
       returrn({ subject: "Old test 001", text: "The test 001 was perform by "+who });
    },
    get: function(who, when){
      returrn({ subject: "Old test 002", text: "The "+when+" the test 002 was performed"});
    }
  ],
  new: [
     //Same thing
  ]
};

問題は、どうやらそれができないということです。配列で関数を宣言する方法はどれでしょうか。配列の各メソッドget()は異なるメッセージを返すことができ、メッセージにはテキスト内の異なる位置でパラメーターに渡された変数を含めることができるため、これを行う必要があります。そのため、明示的に宣言する必要があります。

私はこれが好きではありません:

var Test = {
  old: [
    one: {
      get: function(who, when){
        returrn({ subject: "Old test 001", text: "The test 001 was perform by "+who });
      },
    },
    two: {
      get: function(who, when){
        returrn({ subject: "Old test 002", text: "The "+when+" the test 002 was performed"});
      }
    }
  ],
  new: [
     //Same thing
  ]
};

のように、コンテンツに動的にアクセスする必要があるためですTest.old[test_id].get("toto", "02/04/2013")。残念ながら、JSONの数値でインデックスを作成することはできません。

しかし、私はこれをこのようにします。これ以上良いものはありません。

では、このコンテキストで行うのに最適なことは何ですか?

ありがとう !

4

1 に答える 1

0

質問は曖昧でわかりにくいですが、コードが機能しない理由はわかります。配列とオブジェクトを混同しています。配列リテラルは次のようになります。

var myArray = [
  "first item",
  "second item",
  {value: "third item"},
  ["first/only item in fourth item"],
  1,
  2,
  3.14159,
  function(a,b) { return a + b; },
  "etc."
];

配列内の項目には、プッシュ、ポップ、シフト、シフト解除、および数値インデックスを使用してアクセスします。

オブジェクトリテラルは次のようになります。

var myObject = {
  one: "some value",
  two: {
    value: "object values can be anything"
  },
  123: 456,
  "a million": function (a, b) { return a - b; }
};

オブジェクト内のアイテムは、文字列インデックスを使用してアクセスされます。

最後に、return()関数がどこかで宣言されていますか? どちらの場合でも、戻り値を返さないのはなぜですか?

于 2013-01-15T15:50:44.717 に答える