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

JavaScript字典初始化的正确方式及对象字面量键名疑问

这是JavaScript的特性

你遇到的情况是JavaScript对象字面量的键名解析规则导致的,属于语言本身的特性:

  1. 第一种写法的问题
    在对象字面量{ what: value }里,what会被当作字符串字面量处理,不管你传入的what参数是什么值,最终对象的键都是固定的字符串"what",这就是为什么达不到预期。

  2. 第二种写法能正常工作的原因
    当你先创建空对象,再用obj[what] = value的方式赋值时,方括号[]里的what会被当作变量解析,取它的实际值作为键名,所以能得到你想要的结果。

  3. 更简洁的写法(ES6+)
    其实不用分两步,ES6之后支持计算属性名,直接在对象字面量里用方括号包裹变量就能实现需求:

    this.items[item_type][item_type + '_' + seq] = { [what]: value };
    

    这样写和你分两步的效果完全一样,代码更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 17:11:07