2015-01-15 12 views
7

Załóżmy, że mam klasy w jeden duży plik tak:Dzielenie się definicja klasy w ES 6/Harmony

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

I chcę zerwać definicję klasy, dzięki czemu methodA, methodB i methodC są każdy zdefiniowane w oddzielnych plikach. czy to możliwe?

Odpowiedz

6

powinna być w stanie, jak class ma być tylko cukier składni dla zwykłego prototypu workflow:

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

class MyClass { 
    constructor() { 
    } 
} 

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

export default MyClass 
+0

ale co, jeśli chcę mieć metody z właściwościami? methodOne (a, b) – marschro

+0

'methodOne' jak używać' methodTwo'? – GeminiYellow

1

@elclanrs dał prawidłową odpowiedź, ale chciałbym go zmodyfikować, aby umożliwić korzystanie z this. Uważam też, że jest to bardziej czytelne.

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

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

export default MyClass 

Wskazówka: chociaż jeśli klasa jest tak duża, że ​​gwarantuje, są podzielone na wiele plików, lepszym rozwiązaniem może być podzielona klasę na wielu klasach.