在 ES 6 / Harmony 中拆分 class 定义
Splitting up class definition in ES 6 / Harmony
假设我在一个像这样的大文件中有一个 class:
export default class {
constructor () {}
methodA () {}
methodB () {}
methodC () {}
}
我想分解 class 定义,以便 methodA
、methodB
和 methodC
分别在各自的文件中定义。这可能吗?
您应该可以,因为 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。
假设我在一个像这样的大文件中有一个 class:
export default class {
constructor () {}
methodA () {}
methodB () {}
methodC () {}
}
我想分解 class 定义,以便 methodA
、methodB
和 methodC
分别在各自的文件中定义。这可能吗?
您应该可以,因为 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。