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
thisnorāda uz objektu, kam pieder metode:
const obj = {
name: 'Alice',
greet() {
console.log(this.name);
}
};
obj.greet(); // Alice
- Parasta funkcija (ne kā metode)
thisir atkarīga no režīma un izsaukšanas veida:- Stingrā režīmā (
'use strict') —thisbūsundefined. - Nestreiktā režīmā — globālais objekts (
windowpārlūkā).
- Stingrā režīmā (
function foo() {
console.log(this);
}
foo(); // window vai `'use strict'` režīmā `undefined`
- Arrow funkcijās
thisleksikā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.