class Father { constructor(){} money(){ console.log("10000块"); } } // 子类Son使用 extends 继承父类Father class Son extends Father {} var ss = new Father(); ss.money(); // 10000块
例2:
class Fa { constructor(x, y){ this.x = x; this.y = y; } sum(){ var su = this.x + this.y; console.log(su); } } class Son extends Fa{ constructor(x, y){ // constructor用于存放类的共有属性 this.x = x; this.y = y; } } var son = new Son(1, 2); son.sum(); // 输出:Uncaught ReferenceError: Must call super constructor in derived
class before accessing 'this' or returning from derived constructor
原因:
实例对象son中的参数(1,2)其实是指向子类Son中的constructor(x,y) 并非 父类Fa中的constructor(x,y) 所以无法使用sum()方法。
改进:
super关键字 用于访问和调用父类上的构造函数。可以调用父类的构造函数,也可以调用父类的普通函数class Fa { constructor(x, y){ this.x = x; this.y = y; } sum(){ var su = this.x + this.y; console.log(su); } } class Son extends Fa{ constructor(x, y){ super(x, y);// 调用了父类的构造函数constructor } } var son = new Son(1, 2); son.sum(); // 3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。