2016-03-21 2 views
-1

Я хочу разделить методы класса на свои собственные файлы. Например, если у меня есть простой класс, как это в test.js:Каков наилучший способ привязать «this» класса ES6 к функции стрелки?

export default class TestClass { 

    testFunction(...args) { 
     return require('./test-function').apply(this, args); 
    } 

} 

, а затем в test-function.js метод:

export default function() { 
    /* `this` keyword works fine */ 
} 

Однако, если изменить его на функцию стрелки, то это не работать больше (из-за лексической области видимости?):

export default() => { 
    /* `this` doesn't work anymore */ 
} 

Как бы я связать this правильно, поэтому моя стрелка test функция может использовать его?

+0

См. [Функция стрелки против объявления/выражения функции: эквивалентны ли они/заменяются?] (Http://stackoverflow.com/q/34361379/218196). –

ответ

2

tl; dr - вы не можете.

Если вы экспортируете функцию стрелки, эта функция будет иметь лексический this, привязанный к глобальному объекту (нестрогий режим), или он будет неопределенным (строгий режим).

Вот как работают функции стрелок. Если вам нужна функция для получения объекта вашего класса this, вы должны использовать использовать стандарт function() {} корпус.

+0

Я вижу, спасибо. –

Смежные вопросы