this - это ключевое слово, которое ссылается на объект, в контексте которого был вызван код. Значение this зависит от того, как был вызван код, и может изменяться в разных контекстах.

Значение this может быть определено в следующих контекстах:

  1. В глобальной области видимостиthis ссылается на объект Window в браузере или на объект global в Node.js.
  2. В методах объектаthis ссылается на сам объект.
const obj = {
  name: "John",
  greet: function () {
    console.log(`Hello, my name is ${this.name}`)
  },
}
 
obj.greet() // "Hello, my name is John"
  1. В функциях, вызванных с помощью методов объектаthis ссылается на сам объект.
const obj = {
  name: "John",
  greet: function () {
    console.log(`Hello, my name is ${this.name}`)
  },
}
 
const myGreet = obj.greet
myGreet() // "Hello, my name is undefined"
  1. В конструкторах объектовthis ссылается на новый экземпляр объекта, который создается при вызове конструктора.
function Person(name) {
  this.name = name
  this.greet = function () {
    console.log(`Hello, my name is ${this.name}`)
  }
}
 
const john = new Person("John")
john.greet() // "Hello, my name is John"
  1. В функциях, вызванных с помощью методов call()apply() или bind(), this ссылается на объект, переданный как первый аргумент.
const obj = {
  name: "John",
  greet: function () {
    console.log(`Hello, my name is ${this.name}`)
  },
}
 
const otherObj = {
  name: "Jane",
}
 
obj.greet.call(otherObj) // "Hello, my name is Jane"

Значение this может быть сложным и зависит от контекста, поэтому важно понимать, как оно работает в разных ситуациях.


Назад