ES6 / ES7扩展具有相同名称的类

时间:2020-01-10 19:58:34

标签: javascript class ecmascript-6 extends

由于尚未实现模块的条件导入,因此如何扩展或覆盖同一类:

// I have a main class
// main.js
export default class Main {}

// Main class is used by myClass
class myClass {
  constructor(){
    new Main()
  }
}

// I have an extended main class
// main-extended.js
export default class MainExtended extends Main {}

// the MainExtended is now used by myClass
export class myClass {
  constructor(){
    new MainExtended()
  }
}


// third-class.js
// now I need to do this with any class I can find, 
// preferably with the extended version of both, if both defined
export default class ThirdClass {
  constructor(...args){
    return new myClass(...args)    
  }
}


// destinations

// index.js
import Main, {myClass} from main.js
import ThirdClass from third-class.js


// index-extended.js
import MainExtended, {myClass} from main-extended.js
import ThirdClass from third-class.js



问题是,由于某种原因,index.js编译后还包含了myClass要求MainExtended,因此我决定只在ThirdClass中包含index-extended ,作为MainExtended的奖励功能。

但是我仍然想知道是否还有另一种方法。

1 个答案:

答案 0 :(得分:2)

像VLAZ在评论中说的那样,我不确定您要问的是什么,但您能做到100%这样吗?

解决方案1 ​​

class MyClass {
  constructor(_main){
    myMain = _main;
  }
}

const regularMain = new MyClass(new Main());
const extendedMain = new MyClass(new MainExtended());
相关问题