【发布时间】:2021-09-17 13:12:55
【问题描述】:
基本问题:为什么类中需要构造函数?
下面是一个简单的测试:
- 带有构造函数的圆类
- 没有构造函数的 Circle2 类。
- ... 但是,这两个类都可以工作并且可以创建一个实例。
回到正题,为什么类中需要构造函数?
class Circle {
draw() {
console.log('hello');
}
}
c = new Circle(1);
class Circle2 {
constructor(radius) {
this.radius = radius;
}
draw() {
console.log('hello');
}
}
c2 = new Circle2(1);
【问题讨论】:
-
您的第一个
Circle没有半径。这似乎是添加构造函数的好理由。 -
从技术上讲,您的示例可以正常工作,但现在尝试为这两个类添加“calcArea()”函数。您只能使用 Circle2 这样做,因为您永远不会将半径存储在 Circle1 中。
-
总是有一个默认构造函数,它本质上等同于基类中的
constructor(){}和派生类中的constructor(){ super(); }。你不需要构造函数,但是如果你要为你的类提供参数,你将如何在没有构造函数的情况下接受它们? -
感谢大家的观点。 link 很有启发性