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:
lad os bryde det ned. Når vi bruger bind()
metode:
- JS-motoren opretter en ny
pokemonName
forekomst og bindingpokemon
som densthis
variabel. Det er vigtigt at forstå, at det kopierer pokemonName-funktionen. - efter oprettelse af en kopi af
pokemonName
funktion det er i stand til at kaldelogPokemon()
, 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 givetthis
væ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:
- accepterer også yderligere parametre
- udfører den funktion, den blev opfordret til med det samme.
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:
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
Leave a Reply