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

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

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

person Michael Ekoka    schedule 23.11.2009    source источник
comment
Спасибо за ответы. Проголосовал за обоих и принял Фабьена, так как он ответил первым. еще раз спасибо.   -  person Michael Ekoka    schedule 23.11.2009
comment
Несмотря на менее красиво сформулированное название, этот вопрос на самом деле предшествует другому и, таким образом, является предшественником, а не дубликатом.   -  person Michael Ekoka    schedule 20.11.2014


Ответы (2)


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

var myKeyName = "bar";
x[myKeyName] = "foo";
person Fabien Ménager    schedule 23.11.2009

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

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

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
}
person kennebec    schedule 23.11.2009