结构:
--父类--
class创建一个类型{
构造器(参数){
属性:属性值
}
方法--会自动上传到构造函数的原型上
}
--继承--
class 子类名 extends 父类名{
构造器(){
super()//子类有构造器且使用this前,必须使用super()
}
方法
}
代码:
/*---------父类----------------*/
//class相当于es5构造函数中的function,用来定义类型
class Person {
constructor(name, age) {
this.name = name
this.age = age
}
//方法要写到构造器外,方法会上传到构造函数的原型对象上
//es6中方法的简写
say() {
console.log('say');
}
}
let per = new Person('rose', 12)
console.log(per);
/**----------子类--------------*/
//子类也可以有自己的构造器和方法,但是构造器里必须先调用super方法
//如果没有构造器,也会继承有父类的构造器和原型上的方法
class Student extends Person {
constructor(name, age, gender) {
super(name, age)
this.gender = gender
}
hello() {
console.log('hello')
}
}
//创建子类并调用方法
let stu = new Student('jack', 12, '男')
console.log(stu);
stu.say()
es6的继承比es5的继承方便很多,但是在使用的时候也需要多注意下哦,特别是子类添加构造器时必须先调用super方法哦