Подтвердить что ты не робот

Как использовать значение переменной для ключа другого объекта?

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

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

Теперь я хочу заменить "My English Title" другим значением структуры JSON LOC.MENU_TITLE.

Я попробовал:

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

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

Изменить: Это должно использоваться Контекстное меню JQuery, но у меня возникла проблема со всеми нижеприведенными решениями, и когда пришло время передать String для Separator. Он не показывает разделитель, потому что он передает строку в объект, а не только в строку.

Пример:

var menu1 = [
  {'Option 1':function(menuItem,menu) { alert("You clicked Option 1!"); } },
  $.contextMenu.separator,
  {'Option 2':function(menuItem,menu) { alert("You clicked Option 2!"); } }
];
4b9b3361

Ответ 1

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

Ответ 2

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

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

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

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