【问题标题】:The role of super in OOP in JSJS中super在OOP中的作用
【发布时间】:2020-01-03 14:20:17
【问题描述】:

我在学习 JS 中的 OOP 时遇到了 super() ,它用于调用父类的构造函数。问题是为什么我们需要调用父类的构造函数?我们为什么要关心?

【问题讨论】:

标签: javascript oop


【解决方案1】:

构造函数做了stuff。这些东西是什么取决于类是什么。

如果您正在创建一个子类,那么大多数时候,您会想要做同样的事情。可能还有一些额外的东西。

我们使用super() 来调用它,而不是从父类复制/粘贴构造函数然后对其进行编辑(这需要您手动保持两个函数彼此同步)。

【讨论】:

  • 举个例子,假设我们有class Employee extends Person - Person 构造函数将初始化Person 所需的任何内容,而您希望发生这种情况。如果您对该类进行任何更改,则无需重复 Person 的逻辑即可使用,您还必须更改孩子。然后Employee 构造函数关心任何与Employee 相关的东西。
【解决方案2】:

基本上,super 有点维护父类和子类之间的连接。当它像super.myParentMethod() 一样使用时,它只调用在直接父类或上游声明的myParentMethod

当在child的constructor中调用时,会调用parent的constructor,所以,parent会在child之前初始化。

要完全理解为什么需要它,您可能需要了解更多关于 JS 中的类和构造函数的信息。

有一个关于这个话题的extremely good article

【讨论】:

    猜你喜欢
    • 2020-12-31
    • 2011-12-12
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 2018-03-02
    • 2014-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多