在 ES 6 / Harmony 中拆分 class 定义

Splitting up class definition in ES 6 / Harmony

假设我在一个像这样的大文件中有一个 class:

export default class {
  constructor () {}
  methodA () {}
  methodB () {}
  methodC () {}
}

我想分解 class 定义,以便 methodAmethodBmethodC 分别在各自的文件中定义。这可能吗?

您应该可以,因为 class 应该只是通常原型工作流的语法糖:

import methodOne from 'methodOne'
import methodTwo from 'methodTwo'

class MyClass {
  constructor() {
  }
}

Object.assign(MyClass.prototype, {methodOne, methodTwo})

export default MyClass

@elclanrs 给出了正确答案,但我会修改它以允许使用 this。我也认为这更具可读性。

import methodOne from 'methodOne'
import methodTwo from 'methodTwo'

class MyClass {
  constructor() {
    this.methodOne = methodOne.bind(this)
    this.methodTwo = methodTwo.bind(this)
  }
}

export default MyClass

提示:虽然如果您的 class 太大以至于需要拆分成多个文件,更好的解决方案可能是将 class 拆分成多个 class。