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