К ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΡŽ

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ контСкст `this`

ΠŸΠΎΡ‡Π΅ΠΌΡƒ this зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹Π·Π²Π°Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ.

На этой страницС

ΠœΠ΅Ρ‚ΠΎΠ΄ – функция, записанная Π² свойствС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° this ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Ρ‹Π·Π²Π°Π»ΠΈ.

main.js
const car = {
  brand: "Volvo",
  model: "V60",
  year: 2022,
  getDescription() {
    return `${this.brand} ${this.model}, ${this.year} Π³ΠΎΠ΄`;
  },
};
 
console.log(car.getDescription());

Π—Π΄Π΅ΡΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Ρ‹Π·Π²Π°Π½ ΠΊΠ°ΠΊ car.getDescription(), поэтому this Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Π³ΠΎ - ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ car. Π§Π΅Ρ€Π΅Π· this ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ свойства ΠΈΠΌΠ΅Π½Π½ΠΎ этой ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ говорят «контСкст Π²Ρ‹Π·ΠΎΠ²Π°Β»

Π£ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ this зависит ΠΎΡ‚ способа Π²Ρ‹Π·ΠΎΠ²Π°, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ мСста, Π³Π΄Π΅ написан Π΅Ρ‘ ΠΊΠΎΠ΄. Один ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°:

main.js
const anotherCar = {
  brand: "Audi",
  model: "A4",
  year: 2024,
  getDescription: car.getDescription,
};
 
console.log(anotherCar.getDescription());
// Audi A4, 2024 Π³ΠΎΠ΄

Π₯отя функция ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π±Ρ‹Π»Π° записана Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° car, Π² Π½ΠΎΠ²ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ стоит anotherCar. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ this ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° anotherCar, ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ содСрТит ΠΌΠ°Ρ€ΠΊΡƒ ΠΈ модСль Audi. Π—Π°ΠΏΠΎΠΌΠΈΠ½Π°ΠΉΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Ρ‚Π°ΠΊ: для ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π²Π°ΠΆΠ΅Π½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ слСва ΠΎΡ‚ Ρ‚ΠΎΡ‡ΠΊΠΈ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π°.

БтрСлочная функция Π½Π΅ создаёт собствСнный this, Π° Π±Π΅Ρ€Ρ‘Ρ‚ Π΅Π³ΠΎ ΠΈΠ· ΠΎΠΊΡ€ΡƒΠΆΠ°ΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ запись getDescription() { ... }. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ: руководство MDN ΠΎ this.