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 может быть сложным и зависит от контекста, поэтому важно понимать, как оно работает в разных ситуациях.


Назад