注意——只要new了一个实例对象出来,就会自动调用constructor
子类继承父类方法同时扩展自己方法
就是说,即继承了父类里面的一些方法,同时自己也能实现一些方法
如下代码:
<script>
class Father {
constructor(x, y) {
this.x = x;
this.y = y;
}
sum() {
console.log(this.x + this.y);
}
}
class Son extends Father {
// super(x,y);这句话要写在construor里面
constructor(x, y) {
super(x, y);
this.x = x;
this.y = y;
}
subtract() {
console.log(this.x - this.y);
}
}
var son = new Son(5, 2);
son.subtract(); //3
son.sum(); //7
</script>
但是有以下几个注意点:
ES6中的类和对象****三个注意点
- 在ES6中类没有变量提升,所以必须先定义类,才能通过类实例化对象
- 类里面的共有属性和方法一定要加this使用
这些共有的属性和方法都是属于this的,也就是说,一定要添加this,这些this指向的都是这些共有的属性和方法
代码示例(更清晰):
(也就是指向ldh这个实例对象)
construcor 里面的this 指向的是 创建的实例对象
证明如下:
(注意人家的证明思路)
sing()方法里面的this,指向的是btn这个按钮,因为这个按钮调用了这个函数
如下代码:
construcor里面的this指向实例对象,方法里面的this指向这个方法的调用者
在某些特殊的情况下,方法里面的this指向的是方法的调用者,但是如果我又想在方法内使用constructor里面的this,可以采取以下这种策略: