Kā var mainīt objekta kontekstu JavaScript?
sobes.tech AI
Atbilde no AI
Ir ir daudz galveno veidu, kā mainīt objekta kontekstu (this) JavaScript:
-
call(): Izpilda funkciju ar norādītu kontekstu un argumentiem, kas nodoti atsevišķi.// Piemērs ar call() const obj = { vērtība: 42 }; function parādītVērtību() { console.log(this.vērtība); } parādītVērtību.call(obj); // Izvadīs 42 -
apply(): Izpilda funkciju ar norādītu kontekstu un argumentiem, kas nodoti kā masīvs vai pseido-masīvs.// Piemērs ar apply() const obj = { vērtība: 100 }; function saskaitīt(a, b) { console.log(this.vērtība + a + b); } saskaitīt.apply(obj, [5, 10]); // Izvadīs 115 -
bind(): Atgriež jaunu funkciju, kuras konteksts ir fiksēts uz norādīto objektu. Oriģinālā funkcija netiek izsaukta uzreiz.// Piemērs ar bind() const obj = { vērtība: 200 }; function sveicināt() { console.log("Sveiki no " + this.vērtība); } const fiksētsSveicināt = sveicināt.bind(obj); fiksētsSveicināt(); // Izvadīs "Sveiki no 200" -
Līnijas funkcijas (
=>): Tām nav savasthiskonteksta. Tās manto kontekstu no leksikālās apkārtnes, kurās tās ir definētas.// Piemērs ar līnijas funkciju const obj = { vērtība: "objekts", parādītVērtību: function() { const līnijasFunkcija = () => { console.log("No līnijas funkcijas: " + this.vērtība); // this atsaucas uz obj } līnijasFunkcija(); } }; obj.parādītVērtību(); // Izvadīs "No līnijas funkcijas: objekts" -
Kā objekta metodes izsaukums: Kad funkcija tiek izsaukta kā objekta metode (
obj.metode()),thiskonteksts kļūst pats objekts (obj).// Piemērs ar metodes izsaukumu const obj = { vērtība: "objekta metode", parādīt: function() { console.log(this.vērtība); } }; obj.parādīt(); // Izvadīs "objekta metode" -
Kā konstruktoru (
new) izsaukums: Izmantojotnewoperatoru, veidojot jaunu objekta eksemplāru,thiskonteksts konstruktorā atsaucas uz veidojamo eksemplāru.// Piemērs ar konstruktoru function MyObject(vērtība) { this.vērtība = vērtība; // this atsaucas uz jauno eksemplāru } const eksemplārs = new MyObject("konstruktors"); console.log(eksemplārs.vērtība); // Izvadīs "konstruktors"
Šie veidi ļauj kontrolēt, uz ko atsaucas atslēgvārds this funkcijas iekšienē, kas ir ļoti svarīgi, lai pareizi strādātu ar objektiem un metodēm JavaScript.