Показать сообщение отдельно
  #8 (permalink)  
Старый 19.11.2017, 11:00
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

перечислю все известные мне способы решения "детских" проблем с this. Почему детских? Потому, что разработчики со стажем знают, что this в JS -- динамический.


1) используя замыкание (об этом писали здесь выше)
function foo() {
  const that = this
  setTimeout(function () {
    console.log(that)
  })
}

2) используя привязку контекста и каррирование -- .bind()
function foo() {
  setTimeout(function () {
    console.log(this)
  }.bind(this))
}

3) явное указание контекста -- .apply() .call()
function foo() {
  console.log(this)
}

foo.call(/*ctx*/)
foo.apply(/*ctx*/)

4) используя arrow function
function foo() {
  setTimeout(_ => {
    console.log(this)
  })
}

5) используя классы TypeScript (если я правильно помню, могу ошибаться)
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием