Na koje načine može da se promeni kontekst objekta u JavaScript-u?
sobes.tech АИ
Одговор од АИ
Postoji nekoliko osnovnih načina za promenu konteksta (this) objekta u JavaScript-u:
-
call(): Izvršava funkciju sa datim kontekstom i argumentima, prosleđenim pojedinačno.// Primer sa call() const obj = { vrednost: 42 }; function prikaziVrednost() { console.log(this.vrednost); } prikaziVrednost.call(obj); // Ispisaće 42 -
apply(): Izvršava funkciju sa datim kontekstom i argumentima prosleđenim kao niz ili pseudo-niz.// Primer sa apply() const obj = { vrednost: 100 }; function saberi(a, b) { console.log(this.vrednost + a + b); } saberi.apply(obj, [5, 10]); // Ispisaće 115 -
bind(): Vraća novu funkciju, čiji je kontekst fiksiran na zadati objekat. Originalna funkcija se ne poziva odmah.// Primer sa bind() const obj = { vrednost: 200 }; function pozdrav() { console.log("Zdravo iz " + this.vrednost); } const vezaniPozdrav = pozdrav.bind(obj); vezaniPozdrav(); // Ispisaće "Zdravo iz 200" -
Strelaste funkcije (
=>): Nemaju sopstveni kontekstthis. Nasleđuju kontekst iz leksičkog okruženja u kojem su definisane (tj. iz roditeljskog opsega).// Primer sa strelastom funkcijom const obj = { vrednost: "objekat", prikaziVrednost: function() { const strelaFunkcija = () => { console.log("Iz strela funkcije: " + this.vrednost); // this se odnosi na obj } strelaFunkcija(); } }; obj.prikaziVrednost(); // Ispisaće "Iz strela funkcije: objekat" -
Javno prosleđivanje konteksta putem poziva kao metoda objekta: Kada se funkcija pozove kao metoda objekta (
obj.metoda()), kontekstthispostaje sam objekat (obj).// Primer sa pozivom kao metoda const obj = { vrednost: "metoda objekta", prikazi: function() { console.log(this.vrednost); } }; obj.prikazi(); // Ispisaće "metoda objekta" -
Javno prosleđivanje konteksta putem konstruktora (
new): Kada se koristi operatornewza kreiranje novog primera objekta, kontekstthisunutar konstruktora se odnosi na kreirani primer.// Primer sa konstruktorom function MyObject(vrednost) { this.vrednost = vrednost; // this se odnosi na novi primer } const instanca = new MyObject("konstruktor"); console.log(instanca.vrednost); // Ispisaće "konstruktor"
Ovi načini omogućavaju upravljanje onim na šta se odnosi ključna reč this unutar funkcije, što je ključno za pravilno rukovanje objektima i metodama u JavaScript-u.