JavaScript中如何将已有常量作为另一个Object对象的键使用
问题原因
你当前的写法存在两个问题:
- 语法错误:对象声明里多写了一层多余的左大括号,不符合JS对象字面量的语法规范
- 键名解析逻辑不符合预期:直接写
URL_QUERY_PARAMS.groupId作为对象键时,JS会默认把它当作普通字符串"URL_QUERY_PARAMS.groupId"处理,不会解析常量对应的实际值
最优解决方案
使用ES6推出的计算属性名语法,把需要动态取值的键名表达式用方括号[]包裹即可,该语法会先计算括号内的表达式结果,再将结果作为对象的键名使用。
修正后的代码如下:
export const URL_QUERY_PARAMS = Object.freeze({ parentId: "parentId", groupId: "groupId" }) const queryParam = { [URL_QUERY_PARAMS.groupId]: "test1", "nodePath": "test2" }
补充说明
计算属性名是ES2015标准的原生语法,所有现代浏览器、Node.js v6及以上版本都直接支持,是目前实现动态对象键名最简洁、符合规范的实现方式,没有额外性能开销。
内容的提问来源于stack exchange,提问作者employee
相关产品推荐
相关产品推荐

