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

JavaScript中的无名getter与setter是什么?有何用途?

关于对象字面量中无名称get/set语法的解释

你看到的这种写法是ES6对象字面量的简洁getter/setter语法,本质是把getter绑定到名为get的属性,setter绑定到名为set的属性——相当于省略了get/set关键字后的属性名(默认用方法名作为属性名)。

如何访问

直接通过get和set属性来使用,和你熟悉的带名称的getter/setter用法一致:

const myObj = {
  get() { return 'foo' },
  set(val) { this.y = val }
}

// 调用getter:直接访问myObj.get(无需加括号)
console.log(myObj.get) // 输出: "foo"

// 调用setter:给myObj.set赋值
myObj.set = 'bar'
console.log(myObj.y) // 输出: "bar"

适用场景

  1. 语义化的简单数据封装
    如果你的对象核心逻辑就是“获取某个值”和“设置某个值”,用get/set作为属性名比自定义名称(比如value)更直观,比如轻量状态容器、配置对象:
const config = {
  _theme: 'light',
  get() { return this._theme },
  set(newTheme) { 
    if (['light', 'dark'].includes(newTheme)) {
      this._theme = newTheme;
    }
  }
}

console.log(config.get) // "light"
config.set = 'dark'
console.log(config.get) // "dark"
  1. 统一接口规范
    当你需要让多个对象遵循相同的“获取/设置”接口时,用get/set作为标准属性名能让代码更一致,比如在组件库中,所有可配置的组件实例都通过instance.get获取当前配置,instance.set = xxx更新配置。

  2. 适配第三方API
    部分第三方库可能约定对象需提供get/set形式的访问器,这种写法能快速满足接口要求,无需额外定义自定义属性名。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 04:05:14