2010-02-08 58 views
11

我有类似:如何将变量值用于另一个对象的键?

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!"); } } 
]; 
+4

这不是JSON,它只是一个JavaScript对象。 –

+2

JSON = JavaScript Object Notation ...我想我们正在讲同一种语言:P –

+2

JSON是JavaScript对象的序列化形式,因此语法要求略有不同。 JSON始终表示为一个字符串,而不是一个真实的对象。它被解析成真实的对象,或者用字符串序列化。 –

回答

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

的JavaScript object literals期望的钥匙,是任何一个Identifier,一个String文字或Number文字,解决方法可以是建立一步你的目标步,用括号表示法:

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

请注意,以上不是JSON。

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

+0

为什么要在数组内部对象?不会'var myMenu = {}; myMenu [LOC.MENU_TITLE]'也适用? –

+1

是的,我只是下面的OP具有'VAR MYMENU =结构[...]' – CMS

+0

结构是从jQuery插件的ContextMenu这 –

相关问题