ES6 Class通过mixins进行多重继承

adv*_*ner 4 javascript inheritance multiple-inheritance mixins ecmascript-6

我正在尝试使用mixins来理解ES6多重继承.

我正在关注这篇文章(简单的mixins).但是当我运行代码时,我的输出是:

  1. main
  2. Uncaught ReferenceError: this is not defined,
    错误console.log('main')再次指向

我在最新版本的Chrome上运行它.这是我的代码:

const RaceDayService = superclass => class extends superclass { 
    constructor(){
        console.log('service');
    }
}

const RaceDayDB = superclass => class extends superclass { 
    constructor(){
        console.log('db');
    }
}

class RaceDayUI {
    constructor(){
        console.log('ui');
    }
}

class RaceDay extends RaceDayDB(RaceDayService(RaceDayUI)){
    constructor(options){
        console.log('main');
    }
}

const raceDay = new RaceDay();
Run Code Online (Sandbox Code Playgroud)

关于我做错的任何想法?

谢谢!

sam*_*ime 8

如果您的超类包含构造函数,则必须super()在子构造函数中调用该方法:

const RaceDayService = superclass => class extends superclass { 
    constructor(){
        super();
        console.log('service');
    }
}

const RaceDayDB = superclass => class extends superclass { 
    constructor(){
        super();
        console.log('db');
    }
}

class RaceDayUI {
    constructor(){
        console.log('ui');
    }
}

class RaceDay extends RaceDayDB(RaceDayService(RaceDayUI)){
    constructor(options){
        super();
        console.log('main');
    }
}

const raceDay = new RaceDay();
Run Code Online (Sandbox Code Playgroud)