JavaScript Function bind()

Funktion lainaaminen (Function Borrowing)

Käyttämällä bind()-metodia yksi objekti voi lainata toiselta objektilta metodia.

Tässä esimerkissä luodaan 2 objektia (henkilö ja jäsen).

jäsen-objekti lainaa henkilö-objektin kokoNimi-metodia:

esimerkki

const henkilö = {
  firstName: "Bill",
  lastName: "Gates",
  kokoNimi: toiminto () {
    palauta this.firstName + " " + this.lastName;
  }
}
const jäsen = {
  firstName: "Hege",
  lastName: "Nilsen",
}
let kokoNimi = henkilö.kokoNimi.bind(jäsen);

Kokeile itse

this:n menettämisen

Joskus on käytettävä bind()-metodia estääksemme this.

Tässä esimerkissä henkilö-objektiilla on display-metodi. display-metodissa:this tarkoittaa henkilö-objektia:

esimerkki

const henkilö = {
  firstName: "Bill",
  lastName: "Gates",
  display: toiminto () {
    let x = document.getElementById("demo");
    x.innerHTML = this.firstName + " " + this.lastName;
  }
}
henkilö.display();

Kokeile itse

Kun funktio käytetään paluutoiminnoksi (callback),this menetetään.

Tämä esimerkki yrittää näyttää henkilön nimen 3 sekunnin kuluttua, mutta se näyttää undefined:

esimerkki

const henkilö = {
  firstName: "Bill",
  lastName: "Gates",
  display: toiminto () {
    let x = document.getElementById("demo");
    x.innerHTML = this.firstName + " " + this.lastName;
  }
}
setTimeout(henkilö.display, 3000);

Kokeile itse

bind()-metodi ratkaisee tämän ongelman.

bind()-metodi käytetään henkilön display:n sidottamiseen henkilöön.

Tämä esimerkki näyttää henkilön nimen 3 sekunnin kuluttua:

esimerkki

const henkilö = {
  firstName: "Bill",
  lastName: "Gates",
  display: toiminto () {
    let x = document.getElementById("demo");
    x.innerHTML = this.firstName + " " + this.lastName;
  }
}
let display = person.display.bind(person);
setTimeout(display, 3000);

Kokeile itse

Mikä on this?

JavaScriptissäthis avainsana viittaaobjekti.

viittaamikäobjekti riippuu kutsun (käytön tai kutsun) tavasta.

sen käyttötavan mukaan, avainsana this viittaa eri objekteihin:

  • objektin metodissathis viittaa tähänobjekti.
  • yksin käytettynäthis viittaaglobaali objekti.
  • funktioiden sisälläthis viittaaglobaali objekti.
  • funktioiden sisällä, tiukassa moodissathis on undefined.
  • tapahtumassathis viittaavat tapahtumienelementit.
  • call()、apply() ja bind() -menetelmät voivat this viittaakaikki objektit.

Huomioitavaa:this ei ole muuttuja. Se on avainsana. Et voi muuttaa sitä this arvo.

Katso myös:

Oppitunti:JavaScript this