ES6与高级
2021.9.11
class类的使用
类的本质就是function函数
在ES6中声明类用class关键字
- ES6中类没有变量提升,所以必须先定义类,才能实例化对象
- 类里面的共有属性和方法在内部调用,一定要加this使用
- constructor构造函数的this指向实例对象,方法里的this指向方法调用者(下面有案例)
创建类
//创建一个类的格式
class 类名 {
//constructor是构造函数,即使不写,也会自动创建
constructor(user,age){
//共用的属性放这里
this.user = user; //this必须加,指向的是创建的实例对象
this.age = age
}
//类中的方法
方法1(){
} //实例对象访问
方法2(){
}
// 静态属性,只能由构造函数访问(类名)
lang = "abc"
// 静态方法
static 方法3(){
}
}
//调用类
var ldh = new 类名('李得还',18);
ldh.方法1();
类名.方法3();
继承类
class Father {
} //父类
class Son extends Father{
} //子类,extends为关键字,代表Son继承Father
super关键字调用父类的函数,构造函数
//父类
class Father {
say(){
return '父类'
}
}
//子类继承父类
class Son extends Father {
say(){
return super.say(); //调用父类的方法,将super当对象调用
}
}
//继承中,优先执行子类的方法,先看子类是否有该方法,如果没有则去执行父类中的该方法
super关键字调用父类的构造函数
//父类
class Father {
constructor(x,y){
this.x = x;
this.y = y;
}
sum(){
console.log(this.x + this.y);
}
}
//子类继承父类
class Son extends Father {
constructor(x,y){
super(x,y) //,参数传入父类构造函数,调用了父类中的构造函数,将super当方法用
}
say(){
return super.say(); //调用父类的方法,将super当对象调用
}
}
子类继承父类的方法,同时拥有自己的方法
//父类
class Father {
constructor(x,y){
this.x = x;
this.y = y;
}
sum(){
console.log(this.x + this.y);//必须加this.
}
}
//子类继承父类
class Son extends Father {
constructor(x,y){
//利用super 调用父类的构造函数
super(x,y