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

为何通过实例调用JavaScript类的get方法无需括号?

为什么用get定义的类方法调用时不需要加括号?

这其实是JavaScript中**getter(访问器属性)**的特性,你没遗漏什么关键知识点,只是对get关键字的作用有点误解~

核心区别:get定义的是访问器属性,不是普通方法

当你在类里用get关键字声明一个“方法”时,它本质上并不是一个可调用的函数,而是一个访问器属性。它的作用是:当你通过类实例访问这个属性名时,JavaScript引擎会自动执行对应的get函数,并把函数的返回值作为这个属性的值返回给你。

举个例子拆解你的代码:

class Rectangle {
  constructor(height, width) {
    this.height = height;
    this.width = width;
  }
  // Getter:定义访问器属性area
  get area() {
    return this.calcArea();
  }
  // 普通方法:原型上的可调用函数
  calcArea() {
    return this.height * this.width;
  }
}
const square = new Rectangle(10, 10);
  • 当你写square.area时,JS引擎会自动触发get area()里的逻辑,执行this.calcArea()得到100,所以控制台输出100;
  • 当你写square.area()时,你其实是把square.area返回的100(一个数字值)当作函数来调用,数字并不是函数,自然就会抛出Uncaught TypeError: square.area is not a function的错误。

一句话总结

用get定义的“方法”是伪装成属性的逻辑,访问它就像访问普通的对象属性一样不需要加括号;而普通类方法是真正的函数,必须加括号才能执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:57:24