in javascript is it possible to construct an object literal with expressions evaluating to strings for property names? [duplicate]
i.e. is it possible to do this:
var fruit = "banana";
var x = {
"app" + "le" : 5, // "apple" : 5
function(){return "orange"} : 8, // "orange" : 8
"" + fruit : 3 // "banana" : 3
};
No, you can't, you need to feed it after the first initialization :
var myKeyName = "bar";
x[myKeyName] = "foo";
You need to declare the empty object and build the strings after. An object literal expects valid strings for its names
If you don't run the function for 'orange' as well as define it, the name you want to be 'orange' will be the string of the entire function instead.
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
}
精彩评论