代码之家  ›  专栏  ›  技术社区  ›  Patrick Desjardins

如何对另一个对象的键使用变量值?

  •  11
  • Patrick Desjardins  · 技术社区  · 14 年前

    我有点像:

    var myMenu= [
      {
        'My English Title':function(menuItem,menu) 
                           { ... }
      }];
    

    现在,我希望用其他JSON结构值替换“我的英文标题” LOC.MENU_TITLE .

    我尝试过:

    var myMenu= [
      {
        LOC.MENU_TITLE:function(menuItem,menu) 
                           { ... }
      }];
    

    但它不起作用。任何人都可以给我一个如何在JSON变量中获取JSON值的提示?

    编辑: 这是为了使用 Context Menu of Jquery 但我对下面的所有解决方案都有问题,现在是时候传递分隔符的字符串了。它不显示分隔符,因为它将字符串传递到对象中,而不仅仅是字符串。

    例子:

    var menu1 = [
      {'Option 1':function(menuItem,menu) { alert("You clicked Option 1!"); } },
      $.contextMenu.separator,
      {'Option 2':function(menuItem,menu) { alert("You clicked Option 2!"); } }
    ];
    
    2 回复  |  直到 14 年前
        1
  •  10
  •   Justin Johnson    14 年前
    var tempElement = {};
    tempElement[ LOC.MENU_TITLE ] = function(menuItem, menu) {};
    
    myMenu = [ tempElement ];
    

    为您的编辑寻址。尝试以下操作

    var myMenu = [ {}, $.contextMenu.separator, {} ];
    
    myMenu[0][ LOC.MENU_TITLE ]  = function(menuItem, menu) {};
    myMenu[2][ LOC.MENU_TITLE2 ] = function(menuItem, menu) {};
    
        2
  •  7
  •   Christian C. Salvadó    14 年前

    JavaScript object literals 希望密钥是 Identifier ,A String 文字或A Number 实际上,解决方法可以是使用括号表示法逐步构建对象:

    var myMenu= [{}];
    myMenu[0][LOC.MENU_TITLE] = function(menuItem,menu){ /*...*/ };
    

    请注意,上面不是JSON。

    JSON是一种语言无关的数据交换格式,其语法不同于JavaScript对象文本,基本上只允许字符串键,并且值必须是对象、数组、数字、字符串或文本名称: false , null true .