Sobes.tech
Middle

Pastāsti par to dažādos kontekstos: objektu metodes, bultu funkcijās un parastās funkcijās.

sobes.tech AI

Atbilde no AI

JavaScript, this vērtība ir atkarīga no funkcijas izsaukšanas konteksta:

  • Objekta metodes this norāda uz objektu, kam pieder metode:
const obj = {
  name: 'Alice',
  greet() {
    console.log(this.name);
  }
};
obj.greet(); // Alice
  • Parasta funkcija (ne kā metode) this ir atkarīga no režīma un izsaukšanas veida:
    • Stingrā režīmā ('use strict') — this būs undefined.
    • Nestreiktā režīmā — globālais objekts (window pārlūkā).
function foo() {
  console.log(this);
}
foo(); // window vai `'use strict'` režīmā `undefined`
  • Arrow funkcijās this leksikāli manto no ārējā konteksta, tas ir, no apgabala, kurā funkcija tika deklarēta, nevis no vietas, kur tā ir izsaukta:
const obj = {
  name: 'Bob',
  arrowFunc: () => {
    console.log(this.name);
  },
  regularFunc() {
    const arrow = () => {
      console.log(this.name);
    };
    arrow();
  }
};
obj.arrowFunc(); // undefined vai ārējā konteksta vārds
obj.regularFunc(); // Bob

Tādēļ arrow funkcijas ir noderīgas, lai saglabātu this kontekstu no ārējās funkcijas, kamēr parastās funkcijas un metodes ir ar savu this vērtību, atkarībā no izsaukšanas veida.