Class 可以通过extends关键字实现继承。
ES6 的继承机制实质是先创造父类的实例对象this(所以必须先调用super方法),然后再用子类的构造函数修改this。
使用继承注意点:
- 子类必须在constructor方法中调用super方法,否则新建实例时会报错。
- 在子类的构造函数中,只有调用super之后,才可以使用this关键字,否则会报错。
- super作为函数调用时,代表父类的构造函数,但是返回的是子类的实例。只能用在子类的构造函数之中,用在其他地方就会报错。
- super作为对象时,在普通方法中,指向父类的原型对象;在静态方法中,指向父类。
- ES6 规定,通过super调用父类的方法时,super会绑定子类的this。
- 使用super的时候,必须显式指定是作为函数、还是作为对象使用,否则会报错。
- 子类的_proto_属性,表示构造函数的继承,总是指向父类。
- 子类prototype属性的_proto_属性,表示方法的继承,总是指向父类的prototype属性。
代码说明:
class Person {
constructor(fullname,age) {
this.fullname = fullname;
this.age = age;
}
toString() {
console.log(this.fullname+'---'+this.age);
return this.fullname+'---'+this.age;
}
static eat() {
console.log('x am eating');
}
}
class Man extends Person {
constructor(fullname,age,sex) {
super(fullname,age);
this.sex=sex;
}
toString() {
console.log(super.toString()+'---'+this.sex);
}
}
var m1=new Man('xxx',24 ,'man');
m1.toString(); //xxx---24---man
Man.eat(); //x am eating
本文只是学习es6的一些简单笔记,详情请看阮一峰的es6入门
网友评论