JavaScript super

Super 关键词的基本概念

在面向对象编程中,继承是一种非常重要的机制。它允许一个类(或对象)继承另一个类的属性和方法。在 JavaScript 中,继承是通过原型链实现的,而 super 关键词主要用于子类中调用父类的构造函数以及父类的方法。

Super 关键词的用途

  • 调用父类构造函数:当子类需要初始化从父类继承来的属性时,可以使用 super() 调用父类的构造函数。
  • 访问父类的方法:子类可以通过 super 关键词来访问父类中的方法,即使这些方法在子类中被重写了。

使用 Super 调用父类构造函数

为了使子类实例能够正确地初始化从父类继承来的属性,我们需要在子类的构造函数中调用父类的构造函数。这通常是在子类构造函数的第一行完成的。

示例代码

-- -------------------- ---- -------
----- ------ -
    ----------------- -
        --------- - -----
    -

    ------- -
        ------------------------- ----- - ---------
    -
-

----- --- ------- ------ -
    ----------------- ------ -
        ------------ -- --------
        ---------- - ------
    -

    ------- -
        ------------------------- ---------
    -
-

----- --- - --- ---------- ------- -----------
------------ -- --- --- ------

在这个例子中,我们定义了一个 Animal 类,并且有一个子类 Dog 继承自 AnimalDog 类在它的构造函数中通过 super(name) 来调用父类的构造函数,从而确保 name 属性能够被正确设置。

使用 Super 访问父类的方法

除了调用构造函数外,super 关键词还可以用来访问父类中的方法。这对于扩展或覆盖父类的行为特别有用。

示例代码

-- -------------------- ---- -------
----- ------ -
    ----------------- -
        --------- - -----
    -

    ------- -
        ------------------------- ----- - ---------
    -
-

----- --- ------- ------ -
    ----------------- ------ -
        ------------
        ---------- - ------
    -

    ------- -
        -------------- -- ----- ----- --
        ------------------------- ---------
    -
-

----- --- - --- ---------- ------- -----------
------------ -- --- --- ----- - ------ --- ------

在这个例子中,Dog 类重写了 speak 方法,但在新的 speak 方法中,我们通过 super.speak() 调用了父类的 speak 方法,这样就可以先输出“Rex makes a noise.”,然后再输出“Rex barks.”。

总结

super 关键词在 JavaScript 中是一个强大的工具,用于处理继承相关的任务。通过使用 super,我们可以方便地调用父类的构造函数和方法,从而更好地管理和扩展类的功能。这不仅提高了代码的可读性和可维护性,也使得面向对象编程更加灵活和强大。

上一篇: JavaScript extends
下一篇: JavaScript new
纠错
反馈