В javascript возможно ли построить объектный литерал с выражениями, оценивающими строки в именах свойств?

Т.е. возможно ли это сделать:

var fruit = "banana";
var x = {
    "app" + "le" : 5, // "apple" : 5
    function(){return "orange"} : 8, // "orange" : 8
    "" + fruit : 3 // "banana" : 3
};

2 ответа

Решение

Нет, вы не можете, вам нужно кормить его после первой инициализации:

var myKeyName = "bar";
x[myKeyName] = "foo";

Вам нужно объявить пустой объект и построить строки после. Объектный литерал ожидает допустимые строки для своих имен

Если вы не запустили функцию для "оранжевого", а не определили ее, то вместо имени, которое вы хотите назвать "оранжевым", будет строка всей функции.

var fruit = "banana";
var x = {};
x["app" + "le"]=5;
x[(function(){return "orange"})()]=8;
x[fruit]=3;

/* returns  x={
    apple: 5,
    banana: 3,
    orange: 8
}
Другие вопросы по тегам