JavaScript .oproep() .van toepassing zijn () en .bind () – explained to a total noob

JavaScript heeft een aantal ingebouwde functie/methoden die kunnen worden toegepast op verschillende data types.

net als .split (” ” ) kan van toepassing zijn op een string, .oproep(), .van toepassing zijn () en .bind () zijn methoden van functies.

Deze 3 functies zijn allemaal ontworpen om CONTEXT in te stellen, of meer specifiek, waar “dit” naar verwijst.

meestal definieert u “dit” of laat u het specifiek in een functie opnemen., Bijvoorbeeld, laten we zeggen dat je een object hebt:

var owen = { name: "Owen"}

en je wilt naar dit object verwijzen met behulp van een functie:

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

nu, als de sayTo-functie op Owen wordt aangeroepen, met 2 argumenten, zou het correct worden aangeroepen, omdat

nu, wat als sayTo een beetje anders werd gedefinieerd?

het eerste argument, owen, gaat naar de eerste variabele, ” hi “gaat naar de tweede variabele, en” how are you?”gaat nergens heen, en this.name is niet gedefinieerd, want dit is niet het object owen.

De dit wanneer u console.,log het in, geeft eigenlijk het globale vensterobject terug.

met behulp van .call ()

.call () laat de saytofunctie werken:

de notatie is als volgt:

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

.call forceert in wezen de waarde in deze in welke functie dan ook .oproep wordt toegepast op. In dit geval roepen we de saytofunctie op. .call (owen, …) forceert dit van sayTo () om het owen object te zijn. Aldus this.name is van toepassing.

“Hi” en ” how are you?”worden ingevoerd als het tweede of derde argument van de saytofunctie (Die 2 argumenten heeft).

met behulp van .apply ()

met behulp van .,apply() is zeer vergelijkbaar met .oproep. Het enige verschil is dat .call() neemt arg1 en arg2 de een na de ander.

Voor .apply() om te werken, moeten argumenten 1 en 2 worden ingevoerd als een array:

het formaat is als volgt:

functionName.apply(value of this, )

merk op dat arg1 en arg2 worden ingevoerd als een array.

met behulp van .bind ()

.bind(), in tegenstelling tot .van toepassing zijn () en .call (), geeft een functie terug in plaats van een waarde.

.bind () stelt de waarde hiervan in en verandert de functie in een nieuwe functie, maar het roept de functie niet aan.,

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

in wezen is sayToOwen maken als een nieuwe functie. Dat is techincally:

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

u kunt dan sayToOwen als een normale functie uitvoeren.

u kunt ook de argumenten van sayTo () “binden”:

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

de variabele sayHiToOwen wordt dan:

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

samenvatting

Leave a Comment