JavaScript Class Extends

2025 年 3 月 2 日 | 6 分钟阅读

JavaScript 中的类是什么?

在 JavaScript 中,类是用于创建对象的模板,可以帮助我们封装数据和操作这些数据的代码。它是一个面向对象的编程概念,于 ECMAScript 2015(也称为 ES6)中引入。借助 JavaScript 中的类,我们可以创建模板以帮助用户创建对象。在JavaScript中,它们基于原型构建,但也包含一些对于JavaScript 类独有的语法和语义。

语法

JavaScript 中类的语法如下

要在 JavaScript 中创建类,您需要使用 `class` 关键字和一个名为 `constructor()` 的方法。

JavaScript 中的类继承是什么?

`extends` 关键字是我们可以在 JavaScript 中用来创建另一个类(例如父类)的子类。通过使用子类,我们可以继承其父类的所有属性或方法。 继承是 JavaScript 中的一个 OOP 概念,可用于代码重用,因此当我们创建新类时,可以重用现有类的属性和方法。

通过在 JavaScript 中使用 `extends` 关键字,我们可以创建类声明和表达式,因此我们可以创建一个可以作为另一个类的子类的类,它可以作为子类的原型。

语法

这些子类继承了父类的属性和方法。这允许您扩展类的核心功能,以满足更具体的需求,而无需让父类过载以适应所有可能的用例,也无需重新实现用于类似目的的代码。

示例

让我们通过 JavaScript 中的 `extends` 关键字来举例说明

输出

JavaScript Class Extends

说明

在上面的示例中,`Jungle` 类继承了 `extAnimal` 类的所有方法和属性。这意味着 `animalSize()` 函数和 `name` 属性将包含在 `Jungle` 类中。随后,我们实例化了一个 `wildAnimal` 对象,并使用它来调用 `Jungle` 类的 `animalSize()` 方法。

示例 2

输出

JavaScript Class Extends

说明

在上面的示例中,您可以看到 `Jungle` 类是 `Animal` 的子类。因此,每当调用 `Jungle` 类的构造函数时,它也会调用 `Animal` 类的构造函数,从而为其提供 `name` 属性。

示例 3

输出

JavaScript Class Extends

说明

在上面的示例中,当子类的方法或属性与父类中的方法或属性同名时,将使用子类的方法或属性。这称为方法重写。

在这种特定情况下,`Animal` 类和子类 `Jungle` 类都具有 `behavior` 属性和 `overrideMethod()` 函数。在这种情况下,`overrideMethod()` 函数和 `behavior` 属性被 `Jungle` 类重写。

JavaScript 中的类继承是如何工作的?

以下几点将展示 JavaScript 的工作原理:

  • JavaScript 中的 `extends` 关键字用于创建继承父类属性和方法的子类。这是一种代码重用形式。
  • 在 JavaScript 中,子类(也称为派生类)自动继承父类(也称为基类)的所有方法和属性。
  • 子类还可以重写或扩展从父类继承的方法和属性。
  • 在 JavaScript 中,`super` 关键字用于从子类访问和调用父类的构造函数。
  • JavaScript 不直接支持多重继承。但是,我们可以使用混入(mixins)等技术来实现类似的结果。
  • 理解 `extends` 对于 JavaScript 中的面向对象编程至关重要,因为它允许更组织化和高效的代码结构。

JavaScript 中类继承的优点

在 JavaScript 中使用类继承有一些好处,例如:

代码可重用性

在 JavaScript 中,通过使用继承,我们可以允许子类重用父类的方法和属性,这有助于减少冗余。

创建层级结构

在 JavaScript 中,借助 `extends` 关键字,我们可以建立类之间的层级结构,使代码更具组织性和结构性。

单继承

JavaScript 支持单继承,这意味着子类只能继承一个父类,这使得层级结构保持清晰和易于管理。

方法覆盖

在 JavaScript 中,如果需要,子类可以重写从父类继承的方法,从而实现更特定的功能。

多态

在 JavaScript 中,继承支持多态,其中子类可以用作父类的替代品,从而增加了代码的灵活性。

JavaScript 中类继承的缺点

JavaScript 类继承存在一些缺点,例如:

复杂度

在 JavaScript 中,继承有时会增加代码的复杂性,使其更难理解和维护,尤其是在大型项目中。

紧耦合

在 JavaScript 中,继承会在父类和子类之间创建紧耦合,这意味着父类的更改可能会影响子类,从而导致意外问题。

不灵活

在 JavaScript 中,一旦建立了类层级结构,就可能难以修改,这使得代码在适应不断变化的需求时不够灵活。

过度使用继承

有时会过度使用继承,导致出现难以管理和理解的深层级结构。

继承层级

JavaScript 的单继承模式可能导致冗长的继承层级,使得跟踪方法和属性的流向变得困难。

冲突

在 JavaScript 中,如果层级结构中的两个类具有同名的方法,可能会导致冲突和意外行为。

内存使用

继承可能会增加内存使用量,因为子类的每次继承都会携带父类的属性和方法,即使它们没有被使用。

结论

总之,在使用 ES6 中的继承时,需要 `extends` 关键字。基类或父类是将被扩展的类,而子类(也称为派生类)扩展基类或父类。

要调用父类构造函数,请在子类构造函数中使用 `arguments` 方法。当在子类的方法中调用父类的方法时,只需使用 `super` 关键字。