javascript有類的概念。
創(chuàng)新互聯(lián)公司專注于伊春企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),商城網(wǎng)站建設(shè)。伊春網(wǎng)站建設(shè)公司,為伊春等地區(qū)提供建站服務(wù)。全流程按需求定制開發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
js里面類通過(guò)function進(jìn)行定義,有些類似c++的struct定義。
代碼示例:
function?MyClass(){
this.a?=?'2';
this.show=function(){
alert('1');
}
}
var?myClass?=?new?MyClass();
alert(myClass.a);//獲取屬性
myClass.show();//調(diào)用類方法
javascript是一個(gè)“基于對(duì)象”的編程語(yǔ)言,不是面向?qū)ο蟮木幊陶Z(yǔ)言。
你要知道javascript中的function定義的函數(shù)實(shí)際上就是Function對(duì)象實(shí)例。
例如:
function demo(x){
alert(x);
}
實(shí)際上等價(jià)于:
Function demo = new Function("x","alert(x)");
所以你如果想要用javascript來(lái)模擬面向?qū)ο缶幊蹋ɡ鏙ava的類),那么就可以用function來(lái)模擬Class,用function的原型prototype或者嵌套function來(lái)模擬類的方法或者屬性。下面給你一個(gè)簡(jiǎn)單的例子:
//模擬學(xué)生類,可以帶參數(shù),例如initName
function Student(initName){
var name = initName; //模擬學(xué)生類的屬性name
}
Student.prototype.printName = function(){ //定義Student類prototype中的printName函數(shù)
alert(this.name);
}
測(cè)試時(shí)可以這樣寫:
var student = new Student("張三"); //創(chuàng)建一個(gè)“Student對(duì)象”,實(shí)際上是一個(gè)Function實(shí)例對(duì)象
student.printName(); //執(zhí)行student對(duì)象的printName函數(shù)
JavaScript 是面向?qū)ο蟮恼Z(yǔ)言,引用數(shù)據(jù)類型都是對(duì)象,包括函數(shù)也是對(duì)象,同時(shí)還可以通過(guò) Object 對(duì)象自定義對(duì)象。
但是,和其他面向?qū)ο笳Z(yǔ)言(如 Java 等高級(jí)語(yǔ)言)比,也有很大差異,JS 中沒(méi)有類或接口的概念,即不能直接定義抽象的類,也不能直接實(shí)現(xiàn)繼承。不過(guò),為了編程的方便,我們可以在 JS 中模擬類和繼承的行為。
創(chuàng)建對(duì)象實(shí)例或類(雖然沒(méi)有類的概念,但是可以把用于創(chuàng)建新對(duì)象的對(duì)象看作類),可以通過(guò)構(gòu)造函數(shù)來(lái)實(shí)現(xiàn),構(gòu)造函數(shù)就是具有一系列屬性和行為作為函數(shù)體的函數(shù),可以通過(guò)函數(shù)參數(shù)傳入值。它就相當(dāng)于 Java 中類的構(gòu)造函數(shù),需要時(shí)可以通過(guò) var instanceObj = new ConstructorFunc(para1,para2,...) 來(lái)創(chuàng)建對(duì)象(實(shí)例)。
JS 的對(duì)象中還有一個(gè)重要概念,即原型。每個(gè)對(duì)象都有原型,原型也是一個(gè)對(duì)象,可以看做是構(gòu)造函數(shù)的映像,是創(chuàng)建實(shí)例的模型。對(duì)象(類)的屬性 prototype 即是對(duì)原型對(duì)象的引用,創(chuàng)建實(shí)例后,也有屬性 __proto__ 指向原型對(duì)象,但該屬性是隱含的。
由于不斷創(chuàng)造新對(duì)象(實(shí)例),一級(jí)一級(jí)的傳遞原型對(duì)象,即可構(gòu)成原型鏈。通過(guò)原型鏈,即可實(shí)現(xiàn)繼承。首先將父類對(duì)象的實(shí)例給子類的原型 ChildCons.prototype = new ParentCons(),再在子類構(gòu)造函數(shù)中調(diào)用父類構(gòu)造函數(shù)將繼承的屬性初始化。繼承的變通方法還有很多,可以參考一些資料。