我有一个对象:
let object1 = { a: 'one', b: 'two', c: 'three' };
我正在尝试将object1.a设置为object2的键:
object2 = { key: 'something' };
我试图将密钥设为:
[object1].a
object1.a
object1[a]
我记得我必须使用括号表示法,但无法弄清楚如何做到这一点?
我想这样做的原因是因为我要根据道具改变object1的值,所以我可以根据收到的道具来改变一个组件。
答案 0 :(得分:10)
如果object2
已经存在,您只需使用括号表示法:
object2[object1.a] = 'something';
现在,object2
有一个名为one
的属性,其值为'something'
。
如果你创建 object2,在ES5中你必须先单独创建对象,然后添加属性:
var object2 = {};
object2[object1.a] = 'something';
在ES2015(" ES6")中,您可以在初始值设定项中使用计算属性名称(注意[]
):
// ES2015 only!
let object2 = {
[object1.a]: 'something'
};
与您在进行作业时使用括号表示法一样,您可以在初始值设定项的括号内添加任何表达式。
请注意,不会在对象之间创建持续链接。它在处理初始化程序时纯粹评估object1.a
的值,并使用结果值作为新对象上新属性的名称。