在javascript中是否可以构造一个对象文字,其中表达式评估属性名称的字符串?

时间:2009-11-23 14:23:15

标签: javascript object-literal

即。是否可以这样做:

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

2 个答案:

答案 0 :(得分:4)

不,你不能,你需要在第一次初始化后提供它:

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

答案 1 :(得分:2)

您需要声明空对象并在之后构建字符串。 对象文字需要有效的字符串作为其名称

如果你没有运行'orange'函数并定义它, 你想要成为'orange'的名字将是整个函数的字符串。

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
}