Почему вложенная функция не наследует это? - PullRequest
0 голосов
/ 15 апреля 2019
  const styleBackground = function () {
  console.log('ok')
  console.log(this)
}
const showDropdown = function () {
  console.log(this)
  styleBackground()
}
navItems.forEach(function (navItem) {
  navItem.addEventListener("mouseenter", showDropdown)
})

экран консоли

Hello. Может кто-нибудь объяснить мне, почему во вложенной функции это окно вместо элемента?

вложенная функция - это правильное наименование для вызова styleBackground () в showDropdown (функция внутри функции)?

Как лучше всего передать это функции внутри функции? styleBackground (это)?

большое спасибо

1 Ответ

0 голосов
/ 15 апреля 2019

Прочтите о методе «bind», если вы хотите специально установить значение «this» https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind

В основном, контекст выводится в некоторых случаях, но возвращается к окну.

Иливместо этого используйте функцию стрелки https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions#No_separate_this, которая сохраняет контекст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...