Akými spôsobmi je možné zmeniť kontext objektu v JavaScript?
sobes.tech AI
Odpoveď od AI
Existuje niekoľko hlavných spôsobov, ako zmeniť kontext (this) objektu v JavaScripte:
-
call(): Spúšťa funkciu s daným kontextom a argumentmi, odovzdanými samostatne.// Príklad s call() const obj = { hodnota: 42 }; function zobrazHodnotu() { console.log(this.hodnota); } zobrazHodnotu.call(obj); // Vypíše 42 -
apply(): Spúšťa funkciu s daným kontextom a argumentmi odovzdanými ako pole alebo pseudo-pole.// Príklad s apply() const obj = { hodnota: 100 }; function secti(a, b) { console.log(this.hodnota + a + b); } secti.apply(obj, [5, 10]); // Vypíše 115 -
bind(): Vráti novú funkciu, ktorej je kontext pevne stanovený na zadaný objekt. Pôvodná funkcia sa nevolá okamžite.// Príklad s bind() const obj = { hodnota: 200 }; function pozdrav() { console.log("Ahoj z " + this.hodnota); } const pevneZavolanyPozdrav = pozdrav.bind(obj); pevneZavolanyPozdrav(); // Vypíše "Ahoj z 200" -
Šipkové funkcie (
=>): Nemajú vlastný kontextthis. Dediace kontext z lexikálneho prostredia, v ktorom boli definované (t.j. z rodičovskej oblasti).// Príklad so šipkovou funkciou const obj = { hodnota: "objekt", vypisHodnotu: function() { const sipFunkcia = () => { console.log("Zo šipkovej funkcie: " + this.hodnota); // this odkazuje na obj } sipFunkcia(); } }; obj.vypisHodnotu(); // Vypíše "Zo šipkovej funkcie: objekt" -
Jasné odovzdanie kontextu cez volanie ako metódy objektu: Keď je funkcia volaná ako metóda objektu (
obj.metoda()), kontextomthissa stáva samotný objekt (obj).// Príklad volania ako metódy const obj = { hodnota: "metóda objektu", zobraz: function() { console.log(this.hodnota); } }; obj.zobraz(); // Vypíše "metóda objektu" -
Jasné odovzdanie kontextu cez konštruktor (
new): Pri použití operátoranewna vytvorenie nového inštancie objektu sa kontextthisvnútri konštruktora odkazuje na vytváraný inštanciu.// Príklad s konštruktorom function MyObject(hodnota) { this.hodnota = hodnota; // this odkazuje na nový inštanciu } const inštancia = new MyObject("konštruktor"); console.log(inštancia.hodnota); // Vypíše "konštruktor"
Tieto spôsoby umožňujú riadiť, na čo sa odkazuje kľúčové slovo this vo vnútri funkcie, čo je kľúčové pre správnu prácu s objektmi a metódami v JavaScripte.