Sådan bruges metoderne anvend (?), Opkald (?) Og bind (➰) i JavaScript

I denne artikel taler vi om anvendelses-, opkalds- og bindemetoder i funktionsprototypekæden. De er nogle af de vigtigste og ofte anvendte begreber i JavaScript og er meget tæt knyttet til dette nøgleord.

Så for at få fat i oplysningerne i denne artikel skal du først være fortrolig med konceptet og brugen af dette nøgleord. Hvis du allerede er fortrolig med det, kan du fortsætte - ellers kan du henvise til denne artikel her og derefter komme tilbage her.

For at lære om anvendelse | ring | bind skal vi også vide om funktioner i JavaScript, forudsat at du er fortrolig med dette .

Funktioner

Funktionskonstruktøren opretter et nyt funktionsobjekt. At ringe direkte til konstruktøren kan oprette funktioner dynamisk, som kan udføres i det globale omfang.

Da funktioner er objekter i JavaScript, styres deres påkaldelse af anvendelses-, opkalds- og bindemetoder .

For at kontrollere, om en funktion er et funktionsobjekt, kan vi bruge koden i følgende uddrag, som returnerer sandt.

Det globale funktionsobjekt har ingen egne metoder eller egenskaber. Men da det er en funktion i sig selv, arver den nogle metoder og egenskaber gennem prototypekæden fra Function.prototype. - MDN

Følgende er metoderne i funktionsprototypekæden:

  • Function.prototype.apply ()
  • Function.prototype.bind ()
  • Function.prototype.call ()
  • Function.prototype.isGenerator ()
  • Function.prototype.toSource ()
  • Object.prototype.toSource
  • Function.prototype.toString ()
  • Object.prototype.toString

Vi er bekymrede over de første tre, så lad os begynde.

Ansøge ?

Den finder anvendelse () metoden er en vigtig metode funktionsprototypen og bruges til at kalde andre funktioner med et billede denne nøgleordet værdi og argumenter i form af matrix eller et array lignende objekt.

Arraylignende objekter kan henvise til NodeList eller argumenterne i en funktion.

Dette betyder, at vi kan kalde en hvilken som helst funktion og eksplicit angive, hvad dette skal henvise til i opkaldsfunktionen.

Syntaks

Vend tilbage

Det returnerer resultatet af den funktion, der påberåbes af denne.

Beskrivelse

Den gælder anvendes metode til at tillade en funktion / genstande, som tilhører et objekt x, der skal kaldes og tildelt et objekt y.

Eksempler

1.

Som det ses i det givne uddrag, ser vi, at når vi skubber et array inde i et andet, behandles hele arrayet som et element og skubbes inde i array-variablen.

Men hvad hvis vi vil have, at elementerne skubbes individuelt i stedet for en matrix? Sikker på, at der bogstaveligt talt er et antal måder at gøre det på, men når vi lærer at anvende, lad os bruge det:

I det givne eksempel kan vi se brugen af anvendelse ved sammenføjning af to givne arrays. Argumentarrayet er elementarrayet, og dette argument peger på arrayvariablen. Elementerne i elementarrayet skubbes til det objekt ( array ), som dette er tilpeger . Vi får resultatet, når det andet array individuelle elementer skubbes til det array, som dette er peget på.

2.

Max-funktionen i JS bruges til at finde elementet med den maksimale værdi fra en given pulje af elementer. Men som vi kan se fra uddraget, hvis værdierne er i form af en matrix, får vi resultatet som NaN. Vi taler helt sikkert om JavaScript så igen, der er flere måder at gøre dette på, men lad os bruge anvend.

Nu når vi bruger anvendelse og bruger Math.max () -funktionen, får vi resultatet. Som vi ved, vil anvendelsen tage alle værdierne inde i arrayet som individuelle argumenter, og derefter vil max-funktionen blive anvendt på dem. Dette giver os den maksimale værdi i arrayet.

En interessant ting at påpege her er, at vi i stedet for dette har brugt null. Da argumentet er nummerarrayet, selvom dette introduceres, vil det pege på det samme array, og vi får det samme resultat. Derfor kan vi i sådanne tilfælde bruge null i stedet for dette. Dette viser os, at dette argument i anvendelsesfunktionen er et valgfrit argument.

Opkald

Metoden call () bruges til at kalde en funktion med en given dette og argumenter, der gives individuelt.

Dette betyder, at vi kan kalde en hvilken som helst funktion og eksplicit angive den reference, som denne skal henvise til i opkaldsfunktionen.

Dette er meget lig at anvende, den eneste forskel er, at anvendelse tager argumenter i form af en matrix eller array-lignende objekter, og her gives argumenterne individuelt.

Syntaks

Vend tilbage

Resultatet af at kalde funktionen med den angivne thisværdi og argumenter.

Beskrivelse

Den opkald metode anvendes til at tillade en funktion / genstande, som tilhører et objekt x, der skal kaldes og tildelt et objekt y.

Eksempler

1.

Dette er et eksempel på konstruktorkædning. Som vi kan se, kaldes produktets konstruktør i hver funktion, og ved hjælp af opkald lænkes produktobjektets egenskaber sammen med henholdsvis Pizza- og Toy-objekterne.

Når nye forekomster oprettes af objekterne Pizza og Toy, angives parametre som navn, pris og kategori. Kategori anvendes kun i definitionen, men navnet og prisen anvendes ved hjælp af den kædede konstruktør af produktobjektet, som de er defineret og anvendt i produktobjektet. Med lidt mere tweaking kan vi opnå arv.

2.

I uddraget ovenfor definerede vi en funktion kaldet søvn. Det består af et array-svar, der består af elementer, der adresserer egenskaber ved hjælp af dette nøgleord. De er defineret i et separat objekt uden for funktionen.

Funktionen søvn kaldes med objektet obj som et argument. Som vi kan se, indstilles objekternes egenskaber i henholdsvis this.animal og this.sleepDuration , og vi får den fulde sætning som output.

Bind➰

Metoden bind () opretter en ny funktion, der, når den kaldes, har sit thisnøgleord indstillet til den angivne værdi, med en given rækkefølge af argumenter forud for enhver forudsat, når den nye funktion kaldes. - MDN

Syntaks

Vend tilbage

Bind returnerer en kopi af funktionen med den medfølgende dette og argumenterne.

Beskrivelse

Den binder funktion er meget lig den opkaldet funktionen, med de vigtigste forskel er, der binder returnerer en ny funktion mens opkaldet ikke.

Ifølge ECMAScript 5-specifikationer er funktionen, der returneres af bind , en speciel type eksotisk funktionsobjekt (som de kalder det) kaldet Bound-funktionen (BF) . BF indpakker det oprindelige funktionsobjekt. Når du kalder på en BF, kører den indpakkede funktion i den.

Eksempler

1.

I ovenstående uddrag har vi defineret en variabel x og et objekt kaldet modul. Den indeholder også en egenskab kaldet x og en anden egenskab, hvis tilsvarende værdi er en funktion, der returnerer værdien af x .

Når funktionen getX kaldes, returneres værdierne af x, som er defineret inde i objektet og ikke x i det globale omfang.

Anden variabel erklæres i den globale rækkevidde, som kalder getX funktion fra modulet objekt. Men da variablen er i det globale omfang, peger dette i getX til det globale x, og derfor returneres 9.

En anden variabel er defineret, som kalder den forrige funktion, men denne gang binder den nævnte funktion med modulobjektet . Denne binding returnerer værdien af x inde i objektet. På grund af bindingen peger dette i funktionen på værdien af x i objektet og ikke det globale x . Derfor får vi 81 som output

Konklusion

Nu hvor vi har lært det grundlæggende om metoderne, kan du stadig være lidt forvirret over, hvorfor der er 3 forskellige funktioner, der gør næsten det samme. For at afklare dette koncept skal du øve dig med forskellige situationer og scenarier, så du kan lære mere grundigt, hvor og hvordan de kan bruges. De vil helt sikkert gøre din kode renere og mere kraftfuld.

Hvis du kunne lide denne artikel, bedes du klappe? og følge? for mere.