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

如何将存储在变量中的函数作为对象字面量的getter?

正确给对象添加getter的几种方式

哈哈,这个问题我刚上手对象语法的时候也踩过一模一样的坑!你写的{ get x: foofunc }确实不符合JS的语法规范,所以IDE会报错。下面给你两种常用且正确的实现方式:

1. 对象字面量中直接定义getter

如果是在创建对象的时候就添加getter,正确的语法是使用get 属性名() { ... }的形式。如果想复用你已经定义好的foofunc,可以在getter函数内部调用它,记得用call(this)绑定当前对象的上下文(避免this指向错误):

let foofunc = function() {
  return `当前对象的value是${this.value}`;
};

const myObject = {
  value: 100,
  // 正确的getter写法
  get x() {
    return foofunc.call(this);
  }
};

console.log(myObject.x); // 输出:当前对象的value是100

2. 用Object.defineProperty动态添加getter

如果是给已经创建好的对象添加getter,Object.defineProperty是更灵活的选择,它可以直接把你的foofunc指定为getter函数:

let foofunc = function() {
  return "这是动态添加的getter返回值";
};

const myObject = {};

// 给myObject添加x属性的getter
Object.defineProperty(myObject, 'x', {
  get: foofunc,
  enumerable: true,  // 可选:设置该属性是否可被枚举(比如for...in遍历)
  configurable: true // 可选:设置该属性是否可被修改或删除
});

console.log(myObject.x); // 输出:这是动态添加的getter返回值

简单总结下:对象字面量里的getter必须用get 名() {}的语法,没法直接用get 名: 函数这种写法;如果要复用已有函数,要么在getter里调用它并绑定this,要么用Object.defineProperty直接把函数赋值给get配置项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:07:27