JS: Небольшой вопрос

LH
На сайте с 26.09.2013
Offline
89
645

Объясните, пожалуйста, почему этот код работает,


let self = this;

this.el.addEventListener( 'touchmove', function( e ) {
self.onTouchMove( e );
}, false );

а код ниже нет??

this.el.addEventListener( 'touchmove', this.onTouchMove( e ), false );

P.S Зачем создавать анонимную функцию, передавать событие и терять тем самым контекст??

ДП
На сайте с 23.11.2009
Offline
203
#1

На первый вопрос ответ такой - в первом варианте вы передаете в качестве параметра функцию (которую тут же и описали), а во втором варианте - уже результат выполнения метода this.onTouchMove( e ), так как вы его тут же и вызывали.

S1
На сайте с 15.09.2016
Offline
9
#2

Чтобы контекст не терялся, в ES6 придумали стрелочные функции:

this.el.addEventListener( 'touchmove', (e) => {
self.onTouchMove(e);
}, false);
SEO анализ сайта (https://seo11.ru/)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий