May 31, 2023

This

this в JavaScript относится к объекту, в котором он был создан.

const noraTheCat = {
  name: 'Nora',
  color: 'orange',
  whatsMyName: function () {
    console.log(this.name)
  }
}

то, как меня зовут, называется объект 'noraTheCat', то есть то, чем является 'this'

noraTheCat.whatsMyName() // => Nora

this в JavaScript является сложной задачей, если учитывать область видимости.

function doTwice (func) {
  func()
  func()
}

const noraTheCat = {
  name: 'Nora',
  color: 'orange',
  whatsMyName: function () {
    console.log(this.name)
  }
}

Это приведет к ошибке. doTwice вызывает функцию как. самостоятельная функция, которая устанавливает 'this' в глобальную область видимости. whatsMyName не существует в window

doTwice(noraTheCat.whatsMyName())
// Error! func is not defined

Подробнее

Далее: bind