2010-02-08 91 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這 –

相關問題