javascript - ES6/ES7 扩展同名类

标签 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,所以我决定只包括index-extend 中的 ThirdClass,作为 MainExtended 的额外功能。

但我还是想知道是否还有其他方法。

最佳答案

就像 VLAZ 在评论中所说的那样,我不能 100% 确定你在问什么,但是你能做这样的事情吗?

解决方案1

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

const regularMain = new MyClass(new Main());
const extendedMain = new MyClass(new MainExtended());

关于javascript - ES6/ES7 扩展同名类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59688253/

相关文章:

javascript - (jQuery) 如何找到具有特定类的第一个链接?

javascript - jquery 脚本仅在桌面上工作

javascript - 将字符串树转换为数组

javascript - 导出导入的简写

javascript - 数组javascript的两个元素组合

javascript - Vue JS - 如何将颜色应用于数组中特定元素的文本,然后删除最后一个逗号

javascript - JqMOBI 更改 'about button' 目标

java - 为什么分配刚刚声明的类变量是非法的?

c++ - 手写链表出现段错误,我不明白为什么

类定义中的 c++ friend 类关键字