- 继承:子类可以继承父类的一些属性和方法
<body>
<button>加法 </button>
<script>
var that;
class Father{//父类
constructor(x,y){
that = this;
this.x=x;
this.y=y;
this.btn=document.querySelector('button');
this.btn.onclick=this.sum;
}
sum(){
//这里的this 指向btn,因为btn调用了这个方法,
console.log(that.x+that.y);//that存的是构造函数里的this
}
say(){
console.log("Father");
}
}
class Son extends Father{//子 继承父
constructor(x,y){
super(x,y);//调用父类的构造函数,super必须放在子类this之前
this.x=x;
this.y=y;
}
say(){
console.log("Son");
console.log(super.say())
}
}
var son = new Son(2,6);
son.sum();
var sonTwo = new Son();
sonTwo.say();
</script>
<body>
子类调用父类的函数要用到super关键字,可以调用构造函数也可以调用普通函数。this的指向是谁调用指向谁。子类的构造函数中的this指向的是子类。
继承中如果实例化子类并输出一个方法,先看子类有没有,然后再看父类,如果子类有就先执行子类,子类没有才执行父类的方法(就近原则)
super关键字在子类中,必须放到子类this关键字之前
ES6 中是没有变量提升的,必须先定义类,才能实例化对象。类里边的共有的属性和方法要用this关键字使用
constructor 里面的this指向的是创建的实例对象,方法里的this指向方法的调用者