Junior
Kas ir atslēgvārds 'this'?
sobes.tech AI
Atbilde no AI
this irv atslēgas vārds JavaScript, kas norāda uz objektu, kurā tiek izpildīts pašreizējais kods. Tā vērtība tiek noteikta funkcijas izsaukšanas veida dēļ.
Galvenie this noteikšanas veidi:
- Globālais konteksts: ārpus funkcijas,
thisnorāda uz globālo objektu (windowpārlūkprogrammā,globalNode.js). - Parasts funkcijas izsaukums: ne-stingrā režīmā (
strict mode)thisarī norāda uz globālo objektu (vaiundefined, ja funkcija tiek izsaukta kā objekta metode, bet šis objekts irnullvaiundefined). Stingrā režīmā,thisir vienāds arundefined. - Objekta metode: ja funkcija tiek izsaukta kā objekta metode (t.i., caur punktu operatoru
.),thisnorāda uz šo objektu. - Konstruktors: izmantojot
newoperatoru,thisnorāda uz jauno izveidoto objekta instanci. call(),apply(),bind()metodes: Šie metodes ļauj skaidri noteiktthisvērtību funkcijas izsaukšanas laikā.bind()atgriež jaunu funkciju ar piesaistītuthis, kamērcall()unapply()izsauc funkciju ar norādītuthis.- Līnijas funkcijas: Līnijas funkcijas nav savas
this.thislīnijas funkcijā mantojas no apkārtējās vides, kurā tā tika definēta.
Piemēri:
// Globālais konteksts
console.log(this === window); // true (pārlūkprogrammā)
// Parasts funkcijas izsaukums
function myFunction() {
console.log(this);
}
myFunction(); // window (ne- stingrā režīmā)
// Objekta metode
const myObject = {
myMethod: function() {
console.log(this);
}
};
myObject.myMethod(); // myObject
// Konstruktors
function MyConstructor() {
this.value = 10;
console.log(this);
}
const instance = new MyConstructor(); // jauna objekta instances
// call(), apply(), bind()
function greet(name) {
console.log("Hello, " + name + "! My name is " + this.name);
}
const person = { name: "Alice" };
greet.call(person, "Bob"); // Hello, Bob! My name is Alice
greet.apply(person, ["Bob"]); // Hello, Bob! My name is Alice
const boundGreet = greet.bind(person);
boundGreet("Bob"); // Hello, Bob! My name is Alice
// Līnijas funkcija
const arrowFunction = () => {
console.log(this);
};
arrowFunction(); // window (ja definēta globālā kontekstā)
Saprotot, kā this tiek noteikts dažādos kontekstos, ir būtiski rakstīt pareizu JavaScript kodu.