JavaScript .opfordre() .anvende () og .bind–) – forklaret til en total noob

JavaScript har en række indbyggede funktion/metoder, der kan gælde for forskellige datatyper.

ligesom .split (” ” ) kan gælde for en streng, .opfordre(), .anvende () og .bind () er metoder til funktioner.

disse 3 funktioner er alle designet til at indstille kontekst, eller mere specifikt, hvad “dette” refererer til.

det meste af tiden vil du altid definere “dette” eller få det specifikt inkluderet i en funktion., For eksempel, lad os sige, at du har et objekt:

var owen = { name: "Owen"}

Og du ønsker at henvise til dette objekt ved hjælp af en funktion:

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

Nu, hvis påberåbes den sayTo funktion på Owen, med 2 argumenter, det vil påberåbe sig korrekt, fordi

hvad Nu hvis sayTo blev defineret lidt forskelligt?

det første argument, o ?en, går til den første variabel, “Hej” går til den anden variabel, og “hvordan har du det?”går ingen steder, og this.name er udefineret, fordi dette ikke er objektet o .en.

Den dette, når du konsol.,log det, faktisk returnerer det globale vindue objekt.

anvendelse .opkald ()

.call () gør det muligt for sayTo-funktionen at fungere:

notationen er som følger:

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

.opkald tvinger i det væsentlige værdien i dette i hvilken funktion .opkald anvendes på. I dette tilfælde påberåber vi sayTo-funktionen. .call (o .en, …) tvinger dette af sayTo () til at være o .en-objektet. Således this.name er relevant.

“Hej” og ” hvordan har du det?”indtastes som det andet eller tredje argument i sayTo-funktionen (som tager 2 argumenter).

anvendelse .Anvend ()

anvendelse .,anvende () er meget lig .opfordre. Den eneste forskel er det .call () tager arg1 og arg2 bare den ene efter den anden.

til .Anvend () for at arbejde skal argumenter 1 og 2 indtastes som et array:

formatet er som følger:

functionName.apply(value of this, )

Bemærk, at arg1 og arg2 indtastes som et array.

anvendelse .bind ()

.bind (), i modsætning til .anvende () og .opkald (), returnerer en funktion i stedet for en værdi.

.bind () indstiller værdien af dette og ændrer funktionen til en ny funktion, men den påberåber sig ikke funktionen.,

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

i det væsentlige oprettes saytoo .en som en ny funktion. Hvilket er teknisk:

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

Du kan derefter køre saytoo .en som en normal funktion.

Du kan også “binde” de argumenter, sayTo() samt:

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

Den variable sayHiToOwen så bliver det:

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

Oversigt

Leave a Comment