Articles

Javascript: call (), apply () and bind ()

call (), apply () and bind () — et nyt håb

indtil nu har vi behandlet funktioner som objekter, der er sammensat af et navn (valgfrit, kan også være en anonym funktion) og den kode, den udfører, når den påberåbes. Men det er ikke hele sandheden. Som en sandhedselskende person, jeg må fortælle dig, at en funktion faktisk ser nærmere på følgende billede:

hvad er dette??????? Bare rolig! Jeg vil nu gå gennem disse 3 lignende metoder, der vises på hver funktion med eksempler. Glæd dig!

bind ()

de officielle dokumenter siger:bind() – metoden opretter en ny funktion, der, når den kaldes, har sinthis nøgleordet indstillet til den angivne værdi. (Det taler faktisk om endnu flere ting, men vi vil forlade det til en anden gang :))

Dette er ekstremt kraftigt. Det lader os eksplicit definere værdien af this når du kalder en funktion. Lad os se på cooooode:

brug af bind() method on line 14.

lad os bryde det ned. Når vi bruger bind() metode:

  1. JS-motoren opretter en nypokemonName forekomst og bindingpokemon som densthis variabel. Det er vigtigt at forstå, at det kopierer pokemonName-funktionen.
  2. efter oprettelse af en kopi af pokemonName funktion det er i stand til at kalde logPokemon(), selvom det ikke var på pokemon-objektet oprindeligt. Det vil nu genkende dets egenskaber (Pika og Chu) og dets metoder.

og det seje er, når vi binder () en værdi, kan vi bruge funktionen, ligesom det var enhver anden normal funktion. Vi kunne endda opdatere funktionen til at acceptere parametre og videregive dem som sådan:

opkald(), Anvend ()

de officielle dokumenter til opkald() siger: call()metode kalder en funktion med en givetthisværdi og argumenter leveret individuelt.

hvad det betyder, er, at vi kan kalde enhver funktion og eksplicit angive, hvad this skal referere inden for opkaldsfunktionen. Virkelig ligner bind() metode! Dette kan helt sikkert redde os fra at skrive hacky kode (selvom vi alle stadig er hacker).

de vigtigste forskelle mellem bind() og call() er, at call() metode:

  1. accepterer også yderligere parametre
  2. udfører den funktion, den blev opfordret til med det samme.
  3. call() – metoden laver ikke en kopi af den funktion, den kaldes på.

call()ogapply() tjener nøjagtigt det samme formål. Den eneste forskel mellem, hvordan de fungerer, er, at call() forventer, at alle parametre overføres individuelt, mens apply() forventer en række af alle vores parametre. Eksempel:

Bemærk, at gælder accepterer og array, og opkald forventer hver param individuelt.

disse indbyggede metoder, der findes på hver JS-funktion, kan være meget nyttige. Selvom du ikke ender med at bruge dem i din daglige programmering, vil du stadig løbe ind i det ofte, når du læser andre folks kode.

Hvis du har spørgsmål, som altid, nå ud via Instagram