【发布时间】:2020-01-03 14:20:17
【问题描述】:
我在学习 JS 中的 OOP 时遇到了 super() ,它用于调用父类的构造函数。问题是为什么我们需要调用父类的构造函数?我们为什么要关心?
【问题讨论】:
-
如果你不使用它们,你为什么要做构造器?
标签: javascript oop
我在学习 JS 中的 OOP 时遇到了 super() ,它用于调用父类的构造函数。问题是为什么我们需要调用父类的构造函数?我们为什么要关心?
【问题讨论】:
标签: javascript oop
构造函数做了stuff。这些东西是什么取决于类是什么。
如果您正在创建一个子类,那么大多数时候,您会想要做同样的事情。可能还有一些额外的东西。
我们使用super() 来调用它,而不是从父类复制/粘贴构造函数然后对其进行编辑(这需要您手动保持两个函数彼此同步)。
【讨论】:
class Employee extends Person - Person 构造函数将初始化Person 所需的任何内容,而您希望发生这种情况。如果您对该类进行任何更改,则无需重复 Person 的逻辑即可使用,您还必须更改孩子。然后Employee 构造函数只关心任何与Employee 相关的东西。
基本上,super 有点维护父类和子类之间的连接。当它像super.myParentMethod() 一样使用时,它只调用在直接父类或上游声明的myParentMethod。
当在child的constructor中调用时,会调用parent的constructor,所以,parent会在child之前初始化。
要完全理解为什么需要它,您可能需要了解更多关于 JS 中的类和构造函数的信息。
有一个关于这个话题的extremely good article。
【讨论】: