Sobes.tech
Middle

Kuidas saab JavaScriptis objekti konteksti muuta?

sobes.tech AI

Vastus AI-lt

On olemas mitu peamist viisi objekti this konteksti muuta JavaScriptis:

  1. call(): Käivitab funktsiooni määratud kontekstiga ja argumentidega, mis edastatakse eraldi.

    // Näide `call()`-iga
    const obj = { väärtus: 42 };
    function näitaVäärtust() {
        console.log(this.väärtus);
    }
    näitaVäärtust.call(obj); // Väljund 42
    
  2. apply(): Käivitab funktsiooni määratud kontekstiga ja argumentidega, mis edastatakse massiivi või pseudo-massiivi kujul.

    // Näide `apply()`-ga
    const obj = { väärtus: 100 };
    function liida(a, b) {
        console.log(this.väärtus + a + b);
    }
    liida.apply(obj, [5, 10]); // Väljund 115
    
  3. bind(): Tagastab uue funktsiooni, mille kontekst on fikseeritud määratud objekti külge. Algne funktsioon ei käivitu kohe.

    // Näide `bind()`-iga
    const obj = { väärtus: 200 };
    function tervita() {
        console.log("Tere, see on " + this.väärtus);
    }
    const fikseeritudTervitus = tervita.bind(obj);
    fikseeritudTervitus(); // Väljund "Tere, see on 200"
    
  4. Noolefunktsioonid (=>): Ei oma oma this konteksti. Nad pärivad konteksti leksikaalsest keskkonnast, kus need defineeriti.

    // Näide noolefunktsiooniga
    const obj = {
      väärtus: "objekt",
      näitaVäärtust: function() {
        const nooleFunktsioon = () => {
          console.log("Noolefunktsioonist: " + this.väärtus); // this viitab `obj`
        }
        nooleFunktsioon();
      }
    };
    obj.näitaVäärtust(); // Väljund "Noolefunktsioonist: objekt"
    
  5. Kutsumine objekti meetodina: Kui funktsioon kutsutakse välja objekti meetodina (obj.metod()), muutub this kontekstiks ise objekt (obj).

    // Näide meetodina kutsumisest
    const obj = {
        väärtus: "objekti meetod",
        näita: function() {
            console.log(this.väärtus);
        }
    };
    obj.näita(); // Väljund "objekti meetod"
    
  6. Kutsumine konstruktorina (new): Kasutades new operaatorit uue objekti eksemplari loomiseks, viitab this konstruktoris loodavale eksemplarile.

    // Näide konstruktoriga
    function MyObject(väärtus) {
        this.väärtus = väärtus; // this viitab uuele eksemplarile
    }
    const eksemplar = new MyObject("konstruktor");
    console.log(eksemplar.väärtus); // Väljund "konstruktor"
    

Need viisid võimaldavad kontrollida, millele this viitab funktsiooni sees, mis on oluline objekti ja meetoditega korrektseks töötamiseks JavaScriptis.