オブジェクトのプロパティを初期化しようとしています。1つは関数です。これは、ハードコーディングすると機能します。
subitems = {
"1" : { "label": "Link1",
"action": function(obj) {showURL(obj,"http://link1.com")}
},
"2" : { "label": "Link2",
"action": function(obj) {showURL(obj,"http://link2.com")}
}
}
または、変数のリストを使用して動的に実行しようとした場合
subitemdata = [['Link1','http://link1.com'],['Link2','http://link2.com']];
これを使用して、ラベルとアクションのプロパティを入力し、オブジェクトを生成します
subitems = {};
for (i=0; i<subitemdata.length;i++) {
subitems[i] = {};
subitems[i].label = subitemdata[i][0];
subitems[i].action = function(obj) {showURL(obj,subitemdata[i][1])};
}
私は得る
subitems = {
0 : { label: "Link1",
action: (function(obj) {showURL(obj,subitemdata[i][1]);})
},
1 : { label: "Link2",
action: (function(obj) {showURL(obj,subitemdata[i][1]);})
}
}
'action'プロパティで文字列'subitemdata[i] [1]'が関数'showURL'のパラメータリストに表示されず、'subitemdata'リスト'の実際の値が表示されるようにコードを記述するにはどうすればよいですか?http://link1.com 'および' http://link2.com 'は行いますか?
オブジェクトを初期化する動的な方法を使用しているときに、ハードコードされたオブジェクトのバージョンを再作成することができません。