在 javascript 中,使用 class 语法定义 getter 需要在类体内部声明一个以 get 关键字开头的方法。该方法不接受任何参数,其返回值即为通过属性访问器获取的值。调用时直接访问属性名即可触发该方法的执行。

如何定义并访问一个简单的 getter
定义 getter 的核心在于使用 get 关键字后跟方法名。当外部代码尝试读取该属性时,JavaScript 引擎会自动调用对应的方法并将结果返回。以下是一个完整的示例,展示了如何定义一个计算属性的 getter。
class Circle {
constructor(radius) {
this.radius = radius;
}
get area() {
return Math.PI * this.radius * this.radius;
}
}
const c = new Circle(5);
console.log(c.area); // 输出: 78.53981633974483在上述代码中,area 是一个 getter。当我们访问 c.area 时,并没有调用函数,而是像访问普通属性一样操作,但实际执行的是 get area() 中的逻辑。这提供了更自然的 API 体验。
getter 与 setter 的配合使用
虽然问题仅询问 getter,但在实际开发中,getter 常与 setter 配合使用以实现数据封装和验证。setter 使用 set 关键字定义,接收一个参数作为赋值时的值。结合两者可以控制属性的读写行为。
立即学习“Java免费学习笔记(深入)”;
class Temperature {
constructor(celsius) {
this._celsius = celsius;
}
get celsius() {
return this._celsius;
}
set celsius(value) {
if (value < -273.15) {
throw new Error('Temperature below absolute zero!');
}
this._celsius = value;
}
get fahrenheit() {
return this._celsius * 9/5 + 32;
}
}
const t = new Temperature(20);
console.log(t.fahrenheit); // 输出: 68
// t.celsius = -300; // 抛出错误在这个例子中,fahrenheit 是一个只读 getter,因为它没有对应的 setter。而 celsius 既有 getter 也有 setter,允许外部修改但带有验证逻辑。这种模式常用于需要计算派生值或进行输入校验的场景。
基于程序中某个输入、条件或结果的具体问题
如果尝试将 getter 定义为接受参数的方法,会发生什么?
class BadExample {
get name(arg) { // SyntaxError!
return arg;
}
}在 JavaScript 中,getter 方法不能接受任何参数。如果在 get 方法签名中添加参数,引擎会抛出 SyntaxError。这是因为属性访问语法(如 obj.prop)本身不支持传递参数。如果需要基于不同输入返回不同结果,应使用普通方法而非 getter,例如 getName(arg)。这是定义 getter 时必须遵守的语法规则。


















