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

JavaScript中使用方括号访问对象getter属性的疑问

JavaScript getter 属性的两种访问方式解惑

问题场景

在Codecademy的JavaScript对象属性测验中,有这样一道题:

以下哪行代码能打印tempObj对象中_num键保存的值?

给出的代码示例:

let tempObj = {
    _num: 22,
    get num() {
       return this._num;
  }
};

正确答案包含console.log(tempObj['num']);,但这里有个疑问:给num加引号变成字符串后,为什么还能访问到定义的getter?


解惑

其实核心在于JavaScript对象属性的访问逻辑:

  • 对象的属性名(包括你定义的getter这种访问器属性),底层都是以字符串形式存储的。
  • 访问对象属性有两种等价方式:
    1. 点符号:tempObj.num —— 要求属性名是合法标识符
    2. 方括号符号:tempObj['num'] —— 支持字符串、变量等作为属性名
  • 你定义的get num(),本质是给tempObj添加了一个名为"num"的访问器属性,和普通属性的存储逻辑一致。不管用哪种访问方式,都是根据字符串"num"去查找对应的属性,自然会触发这个getter方法,返回_num的值22。

简单来说,tempObj.num和tempObj['num']是完全等价的写法,只是语法形式不同,最终都会指向同一个访问器属性。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:20:28