Sobes.tech
Middle

Kāpēc JavaScript nedrīkst izmantot atslēgvārdu 'this'?

sobes.tech AI

Atbilde no AI

this nevar izmantot bultfunkcijās, lai sasaistītu ar savu kontekstu. Bultfunkcijas neveido savu this, bet manto tā vērtību no apkārtējās vides, kurā tās tika definētas.

Tāpat this ir neuzticams atgriešanas zvanu funkcijās vai notikumu apstrādātājos bez skaidras konteksta sasaistes (.bind(), .call(), .apply()), jo tā vērtība var mainīties vai kļūt par globālo objektu (ne- stingrā režīmā) vai undefined (stingrā režīmā).

Piemērs:

function tradicionālaFunkcija() {
  console.log(this); // this ir atkarīgs no izsaukuma
}

const bultfunkcija = () => {
  console.log(this); // this manto no ārējās vides
};

const objekts = {
  metode: tradicionālaFunkcija
};

objekts.metode(); // this - objekts
tradicionālaFunkcija(); // this - globālais objekts (window / global)

const objekts2 = {
  metode: bultfunkcija
};

objekts2.metode(); // this - manto. Ja definēts globālajā vidē, tad global/window.