You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在对象属性名声明中使用模板字面量?

问题:用模板字面量直接构建对象动态属性名

我写了一个diagram.appendRichElements方法,它接收如下格式的对象作为参数:

{
  'polyline':{'id':'polyline-id','stroke':'#fee','stroke-width':'2'},
  'circle':{'id':'circle-id','cx':'10','cy':'10','r':'5','fill':'#fee'}
}

我想直接用模板字面量动态生成属性名,像这样调用方法:

diagram.appendRichElements({`${type}`:props});

但这段代码会报错。我在Firefox控制台测试了一段简化代码:

var n = 'test';
console.log({`${n}`:'coucou'});

得到错误提示:Uncaught SyntaxError: expected property name, got '${'。

请问有没有不用var o={}; o[n] = 'Hi!'这种分步赋值的方式,直接用模板字面量构建对象属性名的方法?


解决方案:使用ES6计算属性名语法

当然有,你需要用计算属性名的语法——把模板字面量(或变量)放在方括号[]里,就能直接作为对象的动态属性名。

修正后的调用代码应该是:

diagram.appendRichElements({[`${type}`]: props});

对应你在Firefox控制台的测试代码,改成这样就能正常运行:

var n = 'test';
console.log({[`${n}`]:'coucou'});
// 或者更简洁的写法,直接用变量:
console.log({[n]:'coucou'});

这个特性是ES6(ECMAScript 2015)新增的,只要你的运行环境支持ES6以上版本,就能直接使用。它的作用就是允许你在对象字面量中,用表达式动态定义属性名,不用再先创建空对象再赋值。

内容的提问来源于stack exchange,提问作者FrViPofm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 00:21:11