, играя с некоторыми es6 и сталкиваясь с проблемой, я не уверен, как ее решить. Рассмотрим следующийes6 классы и «это» с обработчиками событий
class Foo {
constructor () {
window.addEventListener('scroll', this.watch);
}
watch () {
console.log(this);
}
}
Внутри из watch
, this
является window
объект, как и ожидалось. Но как я могу обратиться к Foo
? В настоящее время я обойду это с привязкой this.watch.bind(this)
, но мне было бы интересно узнать, есть ли более «правильный» ES6 способ добиться этого.
Я обычно имеют «уаг сам = это» только внутри Foo, но он чувствует себя одинаково противно. Но помните, что JavaScript не является языком OO. – Ian
В статье [ECMAScript 6: автоматическое связывание извлеченных методов] (http://www.2ality.com/2013/06/auto-binding.html) представлено 2 решения. –
Попробуйте использовать функцию толстой стрелки для просмотра: 'watch() {() => {console.log (this)}}' –