舊js定義一種類型需要構(gòu)造函數(shù)和原型對(duì)象? 構(gòu)造函數(shù)和原型對(duì)象是分開的
定義一種類型使用class{}包裹構(gòu)造函數(shù)和原型對(duì)象
1.用class{}包裹構(gòu)造函數(shù)和原型方法
2.構(gòu)造函數(shù)名放在class之后作為整個(gè)類型的的名字,構(gòu)造函數(shù)名較為constructor
3.所有原型對(duì)象方法砖瞧,無需加類型.prototype前綴环揽,直接放在class內(nèi)的函數(shù)默認(rèn)為原型對(duì)象的共有方法
class?Student{
????????????constructor(sname,sage){
????????????????this.sname?=?sname;
????????????????this.sage?=?sage;
}
????????????//直接在class下寫函數(shù)默認(rèn)為類型的原型對(duì)象
????????????intr(){
????????????????console.log(`I'm?${this.sname}`)
}
}
????????console.log(lilei);
除寫法區(qū)別外梢为,原理和舊js完全相同
構(gòu)造函數(shù)與原型對(duì)象祝辣,原型對(duì)象之間不用任何符號(hào)隔開
共有屬性設(shè)置
Student.prototype.共有屬性 = “初一二班”
直接在class下寫固定屬性會(huì)有兼容性問題如下:
class?Student{
? ? className = “初二三班”
}chrom內(nèi)核版本83測(cè)試沒有問題
繼承父類型
制作一個(gè)飛機(jī)大戰(zhàn)游戲
倆種敵機(jī)類型擁有很多相同屬性
定義父類型class
定義子類型使用關(guān)鍵字entends聯(lián)系到父類型在constructor中執(zhí)行super(夫類型的參數(shù))super指代父類型
Extends使用后必須使用super且必須是constructor中第一句話
class 子類型entends 父類型{
????????construntor(所有參數(shù)){
?????????????? super(父類型參數(shù));
????????}
}