2015-06-16 2 views
0

У меня есть класс с прослушивателями событий, которые я бы хотел добавить и удалить, как я хочу в определенные моменты. Слушатели должны быть активированы при создании экземпляра. Так как я не хочу, чтобы написать тот же код дважды, я думал, что я что-то вроде этого:Функция класса вызовов из конструктора

export class A { 
    constructor() { 
    //stuff happens 
    addEventListeners() 
    } 

    addEventListeners() { 
    // Add eventlistener here 
    } 

    RemoveEventListeners() { 
    // remove eventlistener here 
    } 
} 

Так позже я хотел бы быть в состоянии сделать это:

var foo = new A(); 
//..... 
foo.RemoveEventListeners(); 

Но это Безразлично» t, и я получаю ReferenceError, говорящий, что addEventListeners не определен.

Можно ли это решить каким-то образом?

ответ

0

this.addEventListeners() - ваше решение.

Помните, что мы имеем дело с классами сейчас, но на большинстве языков (и все еще переносятся с ES5 на ES6), чтобы ссылаться на метод объекта внутри него, вам нужно использовать ключевое слово this.

export class A { 
    constructor() { 
    //stuff happens 
    this.addEventListeners() // this should work now 
    } 

    addEventListeners() { 
    // Add eventlistener here 
    } 

    RemoveEventListeners() { 
    // remove eventlistener here 
    } 
} 
+0

Спасибо, что сделал трюк, я просто привык к языкам, где область по умолчанию в конструкторе будет классом. Lazy me ... – Tistatos

+0

@Tistatos, JavaScript странно. В любом случае, если бы это помогло, могу ли я предложить отметить ответ как принятый, чтобы он закрыл вопрос? –

+0

«Вы можете принять ответ за 5 минут»;) Сделаю, как только смогу – Tistatos

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