在 ES6 中,我们可以使用 super
方法来引用父类中的成员,以及在子类中调用父类的构造函数。super
的使用方法与 this
相似,它是一个关键字,而不是一个变量或方法。在本篇文章中,我们将详细介绍 super
的用法,并提供代码示例来帮助读者更好地理解。
什么是 super
在 ES6 中,super
是一个表示父类的关键字。子类可以通过 super
关键字调用父类中的 constructor、成员方法和静态方法,它的语法如下:
super([arguments]); // 用于子类中调用父类的 constructor super.member; // 用于访问父类的成员 super([arguments]).member; // 用于调用父类的成员方法
在构造函数中使用 super
子类需要调用父类的 constructor,可以通过使用 super()
方法来实现。这样便能继承并创建父类的实例,子类继承了父类的属性和方法,子类实例也具有了父类实例的所有属性。
class Parent { constructor(x, y) { this.x = x; this.y = y; } } class Child extends Parent { constructor(x, y, z) { super(x, y); // 调用父类的 constructor,传参 x 和 y this.z = z; } print() { console.log(this.x + this.y + this.z); } } let child = new Child(1, 2, 3); child.print(); // 输出 6
代码解释:
- 在
Child
类的 constructor 中,我们使用super(x, y)
调用了Parent
类的 constructor,并传递了参数x
和y
,从而实现了子类继承父类的属性。 Child
类中的print()
方法可以访问父类Parent
类的两个属性x
和y
,以及子类Child
自己的属性z
。
调用父类的成员
通过使用 super
关键字,我们可以在子类中访问父类的成员(包括属性和方法)。在使用 super
访问父类的成员时,我们需要使用 super.member
的形式(member
可以是属性或方法名称),以便明确指出我们希望调用父类的成员。
class Parent { constructor(x, y) { this.x = x; this.y = y; } add() { return this.x + this.y; } } class Child extends Parent { constructor(x, y, z) { super(x, y); this.z = z; } add() { return super.add() + this.z; // 调用父类 add 方法,并在此基础上加上 z } print() { console.log(this.add()); } } let child = new Child(1, 2, 3); child.print(); // 输出 6
代码解释:
Child
类中重写了父类Parent
中的add()
方法,并使用super.add()
访问了父类Parent
中的add()
方法,并在此基础上加上了Child
类自己的属性z
的值。Child
类的print()
方法中调用了子类Child
中重写的add()
方法,并打印出了它的返回值。在这个例子中,print()
方法打印出了x + y + z
的值。
指导意义与总结
通过本篇文章的介绍,我们可以了解到 super
关键字的使用方法和技巧,以及它在 ES6 中的重要性。使用 super
可以通过一个简单的语法,让子类轻松调用父类的成员变量或成员方法。同时,当我们继承并重写父类成员时,可以使用 super
便捷地访问父类的成员。掌握使用 super
的方法对于掌握 JavaScript 基础编程技能具有重要的意义。
总结起来,super
是一种非常有用的功能,它能够帮助我们更好地编写命令式、面向对象的 JavaScript 代码。它的使用方法对于初学者来说可能会比较难理解,但是熟悉一些基本的继承和面向对象的编程知识后,使用 super
就能变得十分简单。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a38dd0add4f0e0ffbb248a