Articles

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

call (), apply () och bind () — a new hope

hittills har vi behandlat funktioner som objekt som består av ett namn (valfritt, kan också vara en anonym funktion) och koden den kör när den åberopas. Men det är inte hela sanningen. Som en sanningsälskande person, jag måste låta dig veta att en funktion faktiskt ser närmare följande bild:

vad är det här??????? Oroa dig inte! Jag kommer nu att gå igenom dessa 3 liknande metoder som visas på varje funktion med exempel. Gläd dig!

bind ()

de officiella dokumenten säger:bind() – metoden skapar en ny funktion som, när den kallas, har sittthis nyckelord inställt på det angivna värdet. (Det talar faktiskt om ännu fler saker, men vi lämnar det för en annan gång :))

detta är extremt kraftfullt. Det låter oss uttryckligen definiera värdet på this när du ringer en funktion. Låt oss titta på cooooode:

använda bind() method on line 14.

låt oss bryta ner det. När vi använder bind() metod:

  1. JS-motorn skapar en nypokemonName instans och bindningpokemon som dessthis variabel. Det är viktigt att förstå att det kopierar pokemonName-funktionen.
  2. efter att ha skapat en kopia av funktionen pokemonName kan den ringa logPokemon(), även om den inte var på pokemon-objektet ursprungligen. Det kommer nu att känna igen dess egenskaper (Pika och Chu) och dess metoder.

och det coola är, efter att vi binder() ett värde kan vi använda funktionen precis som det var någon annan normal funktion. Vi kan till och med uppdatera funktionen för att acceptera parametrar och skicka dem så:

call(), apply ()

de officiella dokumenten för samtal() säger: call()metoden kallar en funktion med en giventhisvärde och argument som tillhandahålls individuellt.

vad det betyder är att vi kan ringa vilken funktion som helst och uttryckligen ange vad this ska referera inom anropsfunktionen. Verkligen liknarbind() metod! Detta kan definitivt rädda oss från att skriva hacky-kod (även om vi alla fortfarande är hackerzzz).

de viktigaste skillnaderna mellanbind() ochcall() är attcall() metod:

  1. accepterar ytterligare parametrar samt
  2. utför funktionen den anropades direkt.
  3. call() metoden gör inte en kopia av funktionen den anropas.

call() och apply() tjänar exakt samma syfte. Den enda skillnaden mellan hur de fungerar är att call () förväntar sig att alla parametrar ska skickas in individuellt, medan apply () förväntar sig en rad av alla våra parametrar. Exempel:

meddelande som gäller accepterar och array, och samtal förväntar varje param individuellt.

dessa inbyggda metoder som finns på varje JS-funktion kan vara mycket användbara. Även om du inte slutar använda dem i din dagliga programmering, kommer du fortfarande att stöta på det ofta när du läser andra människors kod.

Om du har några frågor, som alltid, nå ut via Instagram Xiaomi