js中實現(xiàn)多態(tài)采用和繼承類似的方法
多態(tài)的實現(xiàn)可以采用和繼承類似的方法。首先定義一個抽象類,其中調(diào)用一些虛方法,虛方法在抽象類中沒用定義,而是通過其具體的實現(xiàn)類來實現(xiàn)。
如下面的例子:
Object.extend=function(destination,source){
for(property in source){
destination[property]=source[property];
}
return destination;
}
//定義一個抽象基類base,無構(gòu)造函數(shù)
function base(){};
base.prototype={
initialize:function(){
this.oninit();//調(diào)用了一個虛方法
}
}
function SubClassA(){
//構(gòu)造函數(shù)
}
SubClassA.prototype=Object.extend({
propInSubClassA:"propInSubClassA",
oninit:function(){
alert(this.propInSubClassA);
}
},base.prototype);
function SubClassB(){
//構(gòu)造函數(shù)
}
SubClassB.prototype=Object.extend({
propInSubClassB:"propInSubClassB",
oninit:function(){
alert(this.propInSubClassB);
}
},base.prototype);
var objA=new SubClassA();
objA.initialize();//輸出"propInSubClassA"
var objB=new SubClassB();
objB.initialize();//輸出"propInSubClassB"
首先定義了一個抽象基類base,在base類的initialize方法中調(diào)用了oninit方法,但是基類中并沒用oninit方法的實現(xiàn)或者聲明。SubClassA和SubClassB類繼承自base類,并且分別采用了不同的方式對oninit方法進(jìn)行實現(xiàn)。
相關(guān)文章
typeScript?核心基礎(chǔ)之接口interface
本篇文章主要介紹?typeScript?中接口是啥?如何定義的?接口是如何進(jìn)行擴(kuò)展的以及類如何實現(xiàn)接口,接下來和小編一起進(jìn)入下面文章一起學(xué)習(xí)?typeScript?接口2022-02-02
uni-app 項目中 “文件查找失?。骸甤rypto-js‘“ 的問題及解決方法
在開發(fā)使用 uni-app 框架的項目時,遇到依賴問題是常見的,本文將介紹如何解決編譯過程中出現(xiàn)的 “文件查找失敗:‘crypto-js’” 錯誤,并說明這種錯誤為什么會發(fā)生以及如何避免,下面分步驟給大家?guī)斫鉀Q方案,感興趣的朋友一起看看吧2024-07-07
學(xué)習(xí)JavaScript設(shè)計模式(代理模式)
這篇文章主要帶領(lǐng)大家學(xué)習(xí)JavaScript設(shè)計模式,其中重點介紹代理模式,對代理模式進(jìn)行詳細(xì)剖析,感興趣的小伙伴們可以參考一下2015-12-12
JS使用cookie實現(xiàn)只出現(xiàn)一次的廣告代碼效果
我們上網(wǎng)經(jīng)常會遇到第一次需要登錄而之后不用再登錄的網(wǎng)站的情況,其實是運(yùn)用了Cookie 存儲 web 頁面的用戶信息,Cookie 以名/值對形式存儲,當(dāng)瀏覽器從服務(wù)器上請求 web 頁面時, 屬于該頁面的 cookie 會被添加到該請求中2017-04-04
微信小程序scroll-view實現(xiàn)滾動到錨點左側(cè)導(dǎo)航欄點餐功能(點擊種類,滾動到錨點)
這篇文章主要介紹了微信小程序scroll-view左側(cè)導(dǎo)航欄點餐功能實現(xiàn),點擊種類,滾動到錨點;滾動到錨點,種類選中,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06

