Javascript 如何创建基于两个独立基类的公共子类

Javascript 如何创建基于两个独立基类的公共子类,javascript,Javascript,我现在有两个类,每个类都有一个子类,但是这些子类实际上有相同的扩展函数。我想知道是否有一种方法可以通过一个更松散的类来防止代码重复 我需要扩展父类的原因是因为我希望能够在子类中访问父类的方法 代码如下 class Base1 { /** * @param {() => cy} getWrapper */ constructor( getWrapper ) { this._getWrapper = getWrapper; }

我现在有两个类,每个类都有一个子类,但是这些子类实际上有相同的扩展函数。我想知道是否有一种方法可以通过一个更松散的类来防止代码重复

我需要扩展父类的原因是因为我希望能够在子类中访问父类的方法

代码如下

class Base1 {
    /**
     * @param {() => cy} getWrapper
     */
    constructor( getWrapper ) {
        this._getWrapper = getWrapper;
    }

    getSomething () {
        return this.getWrapper().find('something');
    }
    getWrapper () {
        return this._getWrapper();
    }
}
class Base2 {
    /**
     * @param {() => cy} getWrapper
     */
    constructor( getWrapper ) {
        this._getWrapper = getWrapper;
    }

    getHeading () {
        return this.getWrapper().find('heading');
    }
    getWrapper () {
        return this._getWrapper();
    }
}

class ReWrapBase1 extends Base1 {
    eq ( index ) {
        return new Base1( () => this.getWrapper().eq( index ) );
    }
    getWrapper () {
        return this._getWrapper().find( '[class*=SummaryItemstyles__Wrapper]' );
    }
}
class ReWrapBase2 extends Base2 {
    eq ( index ) {
        return new Base2( () => this.getWrapper().eq( index ) );
    }
    getWrapper () {
        return this._getWrapper().find( '[class*=SummaryItemstyles__Wrapper]' );
    }
}
我最初的想法是让构造函数保存类,但后来我意识到我实际上无法保存父类的方法,这违背了目的

class ReWrapAny {
    constructor(returnedClass) {
        this._returnedClass = returnedClass
    }
    eq ( index ) {
        return new this._returnedClass( () => this.getWrapper().eq( index ) );
    }
    getWrapper () {
        return this._getWrapper().find( '[class*=SummaryItemstyles__Wrapper]' );
    }
}

将此更改为使用mixin

function createMixin (baseClass) {
    eq ( index ) {
        return new baseClass( () => this.getWrapper().eq( index ) );
    }
    getWrapper () {
        return this._getWrapper().find( '[class*=SummaryItemstyles__Wrapper]' );
    }
}
export class ExportBase extends Base1 {}
Object.assign(AmountCards.prototype, createClass(Base1))

您是否试图覆盖子类中的
getWrapper
方法?我不明白你的哪一部分代码与你的目标不符。你能再解释一下吗。请提供一些I/O。@不,是因为
ReWrapBase2
ReWrapBase2
都实现了相同的方法,即
eq
getWrapper
。然而,它们的不同之处在于它们扩展了不同的父类,因为它们需要能够调用各自不同的方法。我想知道是否有一种方法可以将
eq
getWrapper
方法放入一个类或其他什么东西中,以防止代码重复。您想要一个函数包作为mix-ins传递到类继承中吗?我不确定我是否理解正确,但请检查out@Weilory也许就是它。我来试试