es6通過Mixin模擬多繼承

2021-09-03 07:13:48 字數 1092 閱讀 2721

這週在專案中為了實現乙個樹形圖,所以寫了乙個類,隨著功能的增加,這個類越來越多,**量也就越來越多,易讀性很低,所以打算按功能將**抽離到新的檔案,就想到了類的繼承,但是一般的類都是單繼承,那麼怎麼實現多繼承呢?

引入乙個概念混合模式,在修飾器的基礎上,可以實現mixin模式。所謂mixin模式,就是物件繼承的一種替代方案,中文譯為「混入」(mixin),意為在乙個物件之中混入另外乙個物件的方法。看下方**:

新建base.js檔案

class base ;

init () {};

setdata () {};

resize () {};

_upadte () {};

_initcanvas () {};

}export default base

建立nodesmixins.js檔案

const nodesmixin = (superclass) => class extends superclass ;

};export default nodesmixin

建立linksmixins.js檔案

const linksmixin = (superclass) => class extends superclass ;

};export default linksmixin

建立tree.js 

import base from './.tree/base';

import linksmixins from './.tree/linksmixins';

import nodesmixins from './.tree/nodesmixins';

class tree extends nodesmixins(linksmixins(base)) ;

// 初始化

init () ;

};const treefunc = (params = {}) =>

export default treefunc

完成,不難。

es6 使用修飾器實現Mixin模式

在修飾器的基礎上,可以實現mixin模式。所謂mixin模式,就是物件繼承的一種替代方案,中文譯為 混入 mix in 意為在乙個物件之中混入另外乙個物件的方法。請看下面的例子。const foo class myclass object assign myclass prototype foo l...

使用ES6模擬Promise

const promise newstatus param newvalue param queue 執行的作業佇列 changestatus newstatus,newvalue,queue this promisestatus newstatus this promivevalue newval...

vc6 通過ole讀取excel

worksheet m oworksheet 工作表 workbook m oworkbook 工作簿 workbooks m oworkbooks 工作簿集合 worksheets m oworksheets 工作表集合 range m ocurrrange 使用區域 設定為顯示 lpdispat...