JavaScript Function bind()
- Edellinen sivu JS-funktion Apply
- Seuraava sivu JS-sulku
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);
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();
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);
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);
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 metodissa
this
viittaa tähänobjekti. - yksin käytettynä
this
viittaaglobaali objekti. - funktioiden sisällä
this
viittaaglobaali objekti. - funktioiden sisällä, tiukassa moodissa
this
onundefined
. - tapahtumassa
this
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
- Edellinen sivu JS-funktion Apply
- Seuraava sivu JS-sulku