[英]Function name from a variable in Javascript
我从这样的数组创建一个上下文菜单:
var menu1 = [
{
'OPTION1':function(menuItem,menu) {
// code for OPTION1
}
},
{
'OPTION2':function(menuItem,menu) {
// code for OPTION2
}
}
];
当用户右键单击我的网页时,会出现一个菜单,其中包含选项OPTION1和OPTION2。
我需要动态更改函数名称,因为它是上下文菜单选项文本。 有没有办法将函数名称声明为变量?
这就是我要的:
var optionsletters = {};
optionsletters['option1'] = 'option_one';
optionsletters['option2'] = 'option_two';
var menu1 = [
{
optionsletters['option1']:function(menuItem,menu) {
// code for OPTION1
}
},
{
optionsletters['option2']:function(menuItem,menu) {
// code for OPTION2
}
}
];
编辑#1:这是我一直在使用jQuery ContextMenu插件的插件
编辑#2:我需要这样做以允许将语言从西班牙语更改为英语,反之亦然。
怎么样的:
var name = 'option_one',
optionsletters = {};
optionsletters[name] = function() { ... };
您不能使用对象文字表示法来设置arbritrary属性,就像您在第二个示例中尝试的那样。 这并不能阻止您手动设置属性:
function make_menu_item(name, func){
var item = {}; //Create an empty object
item[name] = func; //Assign the property with the name you choose
//(obj['option1'] is equivalent to obj.option1 in Javascript)
return item;
}
var menu = [
make_menu_item('option1', function () {...}),
make_menu_item('option2', function () {...})]
您是否在询问是否可以将“OPTION1”中的键更改为:function(){}为“option1”:function(){}? 如果是这样,您可以将函数复制到新的onclick变量中。 如果您要求的是能够将某个'option1'称为类似option1的字符串,但实际上调用OPTION1(){}您可以尝试一些不同的东西。 一个你可以使你的数组如此arr [{'name':'option1','func':function(){}}]然后你可以引用array [0] .name和array [0] .func。
使用当前代码,您似乎正在用字符串扩展函数。
JS具有超强的表现力,因此有百万种方法可以做任何事情。 函数是第一类对象,因此可以作为参数传递,甚至可以从函数返回。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.