Sobes.tech
Middle

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:

  1. 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
    
  2. 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
    
  3. 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"
    
  4. Līnijas funkcijas (=>): Tām nav savas this konteksta. 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"
    
  5. Kā objekta metodes izsaukums: Kad funkcija tiek izsaukta kā objekta metode (obj.metode()), this konteksts 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"
    
  6. Kā konstruktoru (new) izsaukums: Izmantojot new operatoru, veidojot jaunu objekta eksemplāru, this konteksts 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.