In PHP I can mess around with variable variables and I'm wondering if I can do the same in JavaScript.

I want to create a new object with a property which's name is based on the value of a variable.

if ( obj.name === 'foo' ) {
    var data = { foo: value };
}
if ( obj.name === 'bar' ) {
    var data = { bar: value };
}

Is there a shorter way of doing this without using eval()? Something like:

var data = { obj.name: value };
有帮助吗?

解决方案

Try this:

var data = {};
data[obj.name] = value;

You can read some more about js objects Here.

其他提示

Objects in JavaScript are simply hash maps. You can access members by indexing with their names. For your problem you can use

var data = {};
data[obj.name] = value;

I've used this to implement a dynamic dispatch mechanism for arithmetic operations on different numerical types as described here.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top