views:

63

answers:

2

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
};
+2  A: 

No, you can't, you need to feed it after the first initialization :

var myKeyName = "bar";
x[myKeyName] = "foo";
Fabien Ménager
+2  A: 

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
}
kennebec