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

时间:2010-02-08 20:11:55

标签: javascript json

我有类似的东西:

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 个答案:

答案 0 :(得分:10)

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) {};

答案 1 :(得分:7)

JavaScript object literals期望密钥可以是IdentifierString字面值或Number字面值,解决方法可以是逐步构建对象,使用括号表示法:

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

请注意,上述内容不是JSON。

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