旧js定义一种类型需要构造函数和原型对象 构造函数和原型对象是分开的
定义一种类型使用class{}包裹构造函数和原型对象
1.用class{}包裹构造函数和原型方法
2.构造函数名放在class之后作为整个类型的的名字,构造函数名较为constructor
3.所有原型对象方法,无需加类型.prototype前缀,直接放在class内的函数默认为原型对象的共有方法
class Student{
constructor(sname,sage){
this.sname = sname;
this.sage = sage;
}
//直接在class下写函数默认为类型的原型对象
intr(){
console.log(`I'm ${this.sname}`)
}
}
console.log(lilei);
除写法区别外,原理和旧js完全相同
构造函数与原型对象,原型对象之间不用任何符号隔开
共有属性设置
Student.prototype.共有属性 = “初一二班”
直接在class下写固定属性会有兼容性问题如下:
class Student{
className = “初二三班”
}chrom内核版本83测试没有问题
继承父类型
制作一个飞机大战游戏
俩种敌机类型拥有很多相同属性
定义父类型class
定义子类型使用关键字entends联系到父类型在constructor中执行super(夫类型的参数)super指代父类型
Extends使用后必须使用super且必须是constructor中第一句话
class 子类型entends 父类型{
construntor(所有参数){
super(父类型参数);
}
}