如何从JavaScript类继承?

JavaScript是一门面向对象编程语言,支持基于原型继承的面向对象编程。ES6引入了class关键字,使得JavaScript也支持基于类的面向对象编程。

本文将深入介绍如何从JavaScript类继承。我们将首先介绍ES6的class语法,然后实现一个基本的类及其子类,最后介绍如何使用super关键字来访问父类的方法和属性。

ES6的class语法

在ES6中,可以使用class关键字来定义一个类。下面是一个简单的示例:

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

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

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

上述代码定义了一个Animal类,其中包括一个构造函数和一个sayName方法。构造函数会在创建对象时被调用,用于初始化对象的属性;sayName方法用于输出对象的名字。

注意,在class中定义的方法都是非枚举的,这意味着它们不会出现在对象的Object.keys()方法中。此外,在class中定义的方法都是可枚举的,这意味着它们可以使用for...of循环进行遍历。

实现一个基本的类及其子类

接下来,我们将通过一个实例来演示如何从一个JavaScript类继承。

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

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

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

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

上述代码定义了一个Animal类和一个Dog子类,其中Dog类继承自Animal类。在Dog类中,我们定义了一个新的方法bark(),用于输出狗的叫声。

注意,在Dog类中,我们使用extends关键字将其声明为Animal类的子类。这使得Dog类可以访问Animal类中的属性和方法。

使用super关键字

在子类中,我们可能需要访问父类中的方法或属性。为此,ES6引入了super关键字。

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

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

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

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

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

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

上述代码定义了一个Animal类和一个Dog子类,其中Dog类继承自Animal类。在Dog类中,我们定义了一个新的属性breed,并修改了sayName()方法以输出狗的品种。

此外,在Dog类的构造函数中,我们使用super关键字调用父类的构造函数,以便初始化继承自父类的属性。

总之,使用JavaScript实现类及其子类并进行继承是非常简单的。ES6的class语法使得面向对象编程变得更加容易和直观,而使用super关键字可以让我们方便地访问父类的方法和属性。在实际开发中,我们可以灵活运用这些语法和技巧,为我们的项目带来更好的可扩展性和可维护性。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/11361