繁体   English   中英

Javascript中变量的函数名称

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM