是否可以使用JavaScript中的对象字面量定义一个动态命名的属性? [英] Is it possible to define a dynamically named property using object literal in JavaScript?
本文介绍了是否可以使用JavaScript中的对象字面量定义一个动态命名的属性?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
请考虑以下
var a = {foo: "bar"};
等同于
var a = {};
a.foo = "bar";
等同于
var a = {};
a['foo'] = "bar";
等同于
var a = {}
var b = "foo";
a[b] = "bar";
是否可以执行
Is it possible to do something like
var b = "foo";
var a = { [b]: "bar" };
这样结果将是
// => {foo: "bar"}
可接受的解决方案in JavaScript或CoffeeScript
Acceptable solutions are in JavaScript or CoffeeScript
推荐答案
ES6支持计算属性。
ES6 supports computed properties.
// code from my original question now works in ES6 !
let b = "foo";
let a = { [b]: "bar" };
a.foo; //=> "bar"
任何表达式都可以在 []
定义属性名称
Any expression can be used within the []
to define the property name
let a = {
[(xs => xs.join(''))(['f','o','o'])]: 'bar'
};
a.foo; //=> "bar"
如果您需要在ES5世界中依赖这种行为,非常有能力 babel.js 将您的ES6代码转换为兼容ES5的代码。
If you need to rely on this behavior in an ES5 world, you can lean on the very capable babel.js to transpile your ES6 code to ES5-compatible code.
这篇关于是否可以使用JavaScript中的对象字面量定义一个动态命名的属性?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文