我正在尝试初始化一个对象的属性,一个是函数。如果我对其进行硬编码,这将有效:
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 ' 呢?
使用动态方式初始化对象时,我无法重新创建硬编码的对象版本。