JavaScript .puhelu() .sovelletaan () ja .bind() – selitti yhteensä noob

JavaScript on useita rakennettu toiminto/menetelmiä, joita voi soveltaa eri tietotyyppejä.

aivan kuten .split (” ” ) voi soveltaa merkkijono,.puhelu(), .sovelletaan () ja .Sidonta () ovat funktioiden menetelmiä.

nämä 3 funktiota on kaikki suunniteltu asettamaan konteksti, tai tarkemmin, mihin ”tämä” viittaa.

suurimman osan ajasta määrittelisit aina ”tämän” tai ottaisit sen erikseen mukaan funktioon., Esimerkiksi, voit sanoa, että sinulla on esine:

var owen = { name: "Owen"}

Ja haluat viitata tämän objektin toiminto:

function sayTo(person, first, second){ return first + " " + person.name + " " + second;}sayTo(owen, "Hi", "how are you?");
//returns "Hi Owen how are you?"

Nyt, jos vetosi saton toiminto Owen, 2 perustelut, se olisi vedota oikein, koska

Nyt, mitä jos sato oli määritelty hieman eri tavalla?

ensimmäinen argumentti, owen, menee ensimmäiseen muuttujaan, ” hi ”menee toiseen muuttujaan ja” how are you?”ei mene minnekään, ja this.name ei ole määritelty, koska tämä ei ole Owen.

The this when you console.,Kirjaudu se, itse asiassa palauttaa global ikkuna objekti.

käyttäen .soita ()

.soita() avulla saton toiminto toimisi:

merkintätapa on seuraava:

functionName.call(value of this, arg1, arg2…)

.call käytännössä pakottaa arvo tässä riippumatta funktio .puhelu on voimassa. Tässä tapauksessa vetoamme sayTo-funktioon. .call (owen, …) pakottaa tämän sayton () Owenin objektiksi. Näin this.name on sovellettavissa.

” Hi ” ja ” how are you?”merkitään sayTo-funktion toisena tai kolmantena argumenttina (joka ottaa 2 argumenttia).

käyttäen .käytä ()

käyttäen .,sovelletaan () on hyvin samanlainen .puhelu. Ainoa ero on se .soita() vie arg1 ja arg2 vain yksi toisensa jälkeen.

For .sovelletaan() töihin, väitteet 1 ja 2 merkitään array:

– muodossa seuraavasti:

functionName.apply(value of this, )

Huomaa, että arg1 ja arg2 merkitään array.

käyttäen .sido ()

.sido (), toisin kuin .sovelletaan () ja .soita (), palauttaa funktion arvon sijasta.

.bind() asettaa arvon ja muuttaa toiminto uusi toiminto, mutta se ei vedota toiminto.,

var owen = {name: "Owen”}function sayTo(first, second){return first + " " + this.name + " " + second;}var sayToOwen = sayTo.bind(owen);

Pohjimmiltaan, sayToOwen on luoda uusi toiminto. Mikä on techincally:

var sayToOwen = function(first, second){ return first + " " + owen.name + " " + second;}

Voit sitten ajaa sayToOwen kuin normaali toiminto.

Voit myös ”sitoa” väitteet saton() sekä:

var owen = {name: "Owen”}function sayTo(first, second){return first + " " + this.name + " " + second;}var sayHiToOwen = sayTo.bind(owen, "Hi");

muuttujan sayHiToOwen sitten tulee:

var SayHiToOwen = function(second){
return "Hi" + " " + owen.name + " " + second;}

Yhteenveto

Leave a Comment