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

Pat*_*ins 11 javascript json

我有类似的东西:

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

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

我试过了:

var myMenu= [
  {
    LOC.MENU_TITLE:function(menuItem,menu) 
                       { ... }
  }];
Run Code Online (Sandbox Code Playgroud)

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

编辑:这是使用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!"); } }
];
Run Code Online (Sandbox Code Playgroud)

Jus*_*son 10

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

myMenu = [ tempElement ];
Run Code Online (Sandbox Code Playgroud)

解决您的编辑问题.请尝试以下方法

var myMenu = [ {}, $.contextMenu.separator, {} ];

myMenu[0][ LOC.MENU_TITLE ]  = function(menuItem, menu) {};
myMenu[2][ LOC.MENU_TITLE2 ] = function(menuItem, menu) {};
Run Code Online (Sandbox Code Playgroud)


CMS*_*CMS 7

的JavaScript 对象常量期望的钥匙是任一种Identifier,一个String文字或Number文字,一种解决方法可以是建立通过一步你的对象工序中,使用括号标记:

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

请注意,上面不是JSON.

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