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"
适用场景
- 语义化的简单数据封装
如果你的对象核心逻辑就是“获取某个值”和“设置某个值”,用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"
统一接口规范
当你需要让多个对象遵循相同的“获取/设置”接口时,用get/set作为标准属性名能让代码更一致,比如在组件库中,所有可配置的组件实例都通过instance.get获取当前配置,instance.set = xxx更新配置。适配第三方API
部分第三方库可能约定对象需提供get/set形式的访问器,这种写法能快速满足接口要求,无需额外定义自定义属性名。
内容的提问来源于stack exchange,提问作者baruchiro
相关产品推荐
相关产品推荐

