關(guān)鍵點(diǎn)
1谦纱、class
可以理解為function
,由于class本質(zhì)還是一個(gè)function,因此它也會(huì)擁有一個(gè)的prototype屬性凑队,當(dāng)new一個(gè)class時(shí),會(huì)把class的porototype屬性賦值給這個(gè)新對(duì)象的 __proto屬性。
2邑跪、constructor 方法是默認(rèn)添加的方法高职,在new一個(gè)對(duì)象時(shí)钩乍,自動(dòng)調(diào)用該方法,constructor里面定義自己的屬性怔锌。
3寥粹、繼承extends
和super
,class 子類名 extends 父類名
實(shí)現(xiàn)繼承埃元,當(dāng)然還得在constructor里面寫上super(父類的參數(shù))
涝涤,意思就是在子類中獲得父類的this指針,相當(dāng)于Animal.call(this)
岛杀,參考http://www.reibang.com/p/030b3d890850
// es6繼承
class Animal {
//構(gòu)造函數(shù)阔拳,里面寫上對(duì)象的屬性
constructor(props) {
this.name = props.name || 'Unknown';
}
//方法寫在后面
eat() {//父類共有的方法
console.log(this.name + " will eat pests.");
}
}
//class繼承
class Bird extends Animal {
//構(gòu)造函數(shù)
constructor(props,myAttribute) {//props是繼承過(guò)來(lái)的屬性,myAttribute是自己的屬性
//調(diào)用實(shí)現(xiàn)父類的構(gòu)造函數(shù)
super(props)//相當(dāng)于獲得父類的this指向
this.type = props.type || "Unknown";//父類的屬性类嗤,也可寫在父類中
this.attr = myAttribute;//自己的私有屬性
}
fly() {//自己私有的方法
console.log(this.name + " are friendly to people.");
}
myattr() {//自己私有的方法
console.log(this.type+'---'+this.attr);
}
}
//通過(guò)new實(shí)例化
var myBird = new Bird({
name: '小燕子',
type: 'Egg animal'//卵生動(dòng)物
},'Bird class')
myBird.eat()
myBird.fly()
myBird.myattr()
實(shí)戰(zhàn)參考: