Sobes.tech
Middle
22

Қысқаша айтыңыз: `this` — бұл аймақ емес, шақыру контексті. Ол функция қай жерде жарияланғанына емес, қалай шақырылғанына байланысты анықталады. 3-4 ережені қосуға болады: - Қалыпты функция шақыру — бұл әдетте strict режимінде анықталмаған. - Объект әдісі — this нысанға көрсетеді, ол нүктеден сол жақта орналасқан. - call / apply / bind — бұлды нақты орнатуға мүмкіндік береді. - Жолдас функциялар — өздерінің this-і болмайды, олар сыртқы контекстен алады.

Сұралған компаниялар
АЙ-ТЕКОАЙ-ТЕКО

AI-дан жауап

sobes.tech AI

this — это не область видимости, а контекст вызова функции. Он определяется не там, где функция объявлена, а там, как она вызвана.

Правила:

  • Обычный вызов функции — this обычно undefined в strict mode.
  • Метод объекта — this указывает на объект слева от точки.
  • call / apply / bind — позволяют явно задать this.
  • Стрелочные функции — своего this не имеют, берут его из внешнего контекста.

В твоём примере:

class Foo {
  bar = 1;
  bla = () => console.log(this.bar); // стрелочная, this из Foo
  baz = function () {console.log(this.bar);}; // обычная, this зависит от вызова
}

new Foo().bla(); // this — объект Foo, выведет 1
new Foo().baz(); // this — объект Foo, выведет 1

Если вызвать baz отдельно, например, const f = new Foo(); const fn = f.baz; fn();this будет undefined или глобальным объектом.