假设我们有一个类ABC:
class ABC{
constructor(param1, param2){
this.prop1 = param1;
this.prop2 = param2;
}
ABCMethod1(){
console.log(this.prop1 + ' ' + this.prop2);
}
}
还有一个扩展类ABC的类XYZ:
class XYZ extends ABC{
XYZMethod1(){
this.ABCMethod1();
}
}
因此,ES6 引入了一个新的关键字super,用于访问子类中的父类成员。但是我可以通过使用以下方法很容易地访问子类中的父类成员:
var myObject = new XYZ('Property 1','Property 2');
myObject.XYZMethod1();
在浏览器控制台中打印以下内容:
Property 1 Property 2
现在让我们在子类XYZ中使用super而不是this来做同样的事情:
class XYZ extends ABC{
XYZMethod1(){
super.ABCMethod1();
}
}
现在让我们再次调用XYZmethod1()来查看结果:
var myObject = new XYZ('Property 1','Property 2');
myObject.XYZMethod1();
在浏览器控制台中打印以下内容:
Property 1 Property 2
结果: this和super在控制台中返回相同的输出。那么,如果我们可以使用this访问父方法,那么在 ES6 中super的目的是什么,我们为什么要使用它呢?谁能用简单的话举例说明?Property 1 Property 2