在javascript中,類(lèi)是一種用戶定義類(lèi)型,也稱(chēng)類(lèi)類(lèi)型,是一個(gè)具有相同屬性和行為的群體的集合;從es6開(kāi)始,可通過(guò)創(chuàng)建class關(guān)鍵字來(lái)定義一個(gè)類(lèi)的模板,例“class 類(lèi)名{}”。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
什么是類(lèi)
在面向?qū)ο缶幊讨?,?lèi)(class)是對(duì)象(object)的模板,定義了同一組對(duì)象(又稱(chēng)"實(shí)例")共有的屬性和方法。類(lèi)是一種用戶定義的引用數(shù)據(jù)類(lèi)型,也稱(chēng)類(lèi)類(lèi)型。
我們可以理解類(lèi)是一個(gè)具有相同屬性和行為的群體的集合。
JS 中的類(lèi)
在ES5之前,JS中要表達(dá)一個(gè)類(lèi),要用一種叫做prototype-based
的語(yǔ)法風(fēng)格
function 士兵(id,hp){ this.id = id this.hp = hp } 士兵.prototype = { constructor:士兵() walk:function(){ } , Shooting:function(){ } , }
在es6中,首次引入了類(lèi)的概念,通過(guò)創(chuàng)建class關(guān)鍵字來(lái)定義一個(gè)類(lèi)的模板。
1、在js中實(shí)現(xiàn)創(chuàng)建一個(gè)Class
class Number{ }
2、實(shí)現(xiàn)Class的構(gòu)造方法、實(shí)例屬性和實(shí)例方法
//構(gòu)造方法 class Number{ //實(shí)例屬性 constructor(id,age){ //this指向當(dāng)前事件 this.id=id; this.age=age; } //實(shí)例方法 num(){ console.log("hh"); } } //實(shí)例化對(duì)象 var n1=new Number("1","2"); n1.num(1); console.log(n1.id); console.log(n1.age); var n2=new Number("3","4"); n2.num(2); console.log(n2.id); console.log(n2.age);
效果展示:
hh 1 2 hh 3 4
3、Class的靜態(tài)屬性和靜態(tài)方法
//構(gòu)造方法 class Number{ //靜態(tài)屬性調(diào)用一個(gè)方法 static ppp=1; //實(shí)例屬性 constructor(id,age){ //this指向當(dāng)前事件 this.id=id; this.age=age; console.log(Number.ppp) } //實(shí)例方法 num(){ console.log("hh"); }} //實(shí)例化對(duì)象 var n1=new Number("1","2"); n1.num(1); console.log(n1.id); console.log(n1.age); var n2=new Number("3","4"); n2.num(2); console.log(n2.id); console.log(n2.age);
效果展示:
1 hh 1 2 1 hh 3 4
4、類(lèi)的繼承
//父類(lèi) class Father{ //構(gòu)造方法不能被繼承 constructor(){ console.log("我是父親"); this.name="father" } } //子類(lèi) class Son extend Father{ //執(zhí)行子類(lèi)構(gòu)造方法之前必須先執(zhí)行父類(lèi)構(gòu)造方法 constructor(){ super();//執(zhí)行父類(lèi)構(gòu)造方法 console.log("我是兒子") } } var son=new Son; console.log(son.name)
效果展示:
我是父親 我是兒子 father
【推薦學(xué)習(xí):javascript高級(jí)教程】