Как использовать значение переменной для ключа другого объекта? - PullRequest
11 голосов
/ 08 февраля 2010

У меня есть что-то вроде:

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

Теперь я хочу заменить «Мой английский заголовок» другим значением структуры JSON LOC.MENU_TITLE.

У меня есть попытка:

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

Но это не работает. Кто-нибудь может подсказать, как получить значение JSON внутри переменной JSON?

Edit: Для этого нужно использовать контекстное меню в 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 ]

10 голосов
/ 08 февраля 2010
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 голосов
/ 08 февраля 2010

JavaScript объектные литералы ожидают, что ключи будут либо Identifier, String литералом или Number литералом, обходным путем может быть создание вашего объекта шаг за шагом, используя скобку обозначения:

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

Обратите внимание, что выше не JSON.

JSON - это не зависящий от языка формат обмена данными, его грамматика отличается от литералов объекта JavaScript, в основном разрешением являются только строковые ключи, а значения должны представлять собой объект, массив, число, строку или литеральные имена: false , null true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...