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

关于使用数组字面量访问JavaScript对象属性的疑问求解

JavaScript对象属性键与数组访问的运行逻辑

先拆解对象字面量里的键处理逻辑:

  • JavaScript里,对象的属性键(除Symbol类型外)最终都会被转换为字符串类型。
  • 你写的这三个键:"1": "a"、1: "b"、[1]: "c",本质都是同一个字符串键"1":
    • 直接写数字1当键,JS会自动把它转成字符串"1";
    • 方括号语法[1]里的表达式1求值后是数字1,同样会被转成字符串"1";
  • 因为对象的键是唯一的,后面的赋值会覆盖前面的,所以"1"对应的最终值是最后设置的"c",[2]: "k"同理会被转成字符串"2",对应值"k"。

再看属性访问的逻辑:

  • obj[1]:这里的数字1会被转成字符串"1",所以取到的是键"1"对应的"c";
  • obj[[1]]:用数组[1]作为访问键时,JS会先把数组转成字符串。数组的toString()方法会将元素用逗号拼接,[1].toString()的结果就是"1",最终还是访问键"1",所以结果也是"c"。

可以再试个例子验证:如果写obj[[1,2]],数组转字符串是"1,2",如果对象里有"1,2"这个键,就会返回对应的值,没有的话就返回undefined。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 02:59:53