JavaScript: Lær ‘dette’ – Find CALL-SITE af en funktion

Dette er den første artikel i en serie, som jeg laver, der fokuserer på at lære, hvad this virkelig er i JS. For korrekt at bestemme, hvadthis binder til, skal vi først forstå et par grundlæggende begreber, som vi har brug for, når vi bestemmerthis binding i JS og at vide, hvad der er opkaldsstedet for en funktion, er et af disse afgørende begreber.

før vi dykker ned i, hvad call-site for en funktion er, lad os først prøve at forstå, hvorfor vi har brug for at kende call-site i første omgang. Årsagerne er som følger:

  1. det er nok noget meget nemt at’ site ‘ i et stykke kode. Men nogle gange kan visse kodningsmønstre skjule det rigtige opkaldssted. For at fjerne al tvetydighed relateret til dette emne skal du forstå call-site (meget tydeligt).
  2. det er det eneste, der betyder noget, hvis du vil forstå, hvordan this binding fungerer.

når det er sagt, lad os nu forstå opkaldsstedet for en funktion.

generelt er opkaldsstedet for en funktion ‘det sted, hvorfra den bestemte funktion kaldes i et givet stykke kode’. Gå således til det sted, og du ved, hvor opkaldsstedet for denne funktion er!

lad os nu gennem følgende kodestykke få øje på, hvor opkaldssiderne for funktioner er:

det var nemt! Men der er et lille problem med denne måde at finde opkaldsstedet på: nogle gange kan det være svært at få øje på det manuelt (for eksempel: forestil dig 1000s af kodelinjer, og du skal finde opkaldsstedet manuelt!).

det er her call-stack kommer i spil. Hvad er en call-stack? Det er en stak (som navnet antyder). Af hvad? Af funktioner. Hvilke funktioner? Af alle de funktioner, der blev påberåbt. For hvad? For at få dig til, hvor du er lige nu i din udførelse (dvs.det aktuelle øjeblik for udførelse).

Hvis du ser på din call-stack, er det rigtige call-site inden for funktionen invocation forud for den funktion, der i øjeblikket udføres.

lad os nu bruge call-stack til at finde opkaldssiderne for funktioner i den samme kode, der er brugt ovenfor:

hurtig tip: I stedet for manuelt at finde ud af den rækkefølge, som funktioner blev påberåbt (det er fejlbehæftet og trættende), skal du bruge debugger tool i din bro.ser for at se call-stack. Debuggeren stopper ved den linje, du indstiller dit breakpoint, og viser dig opkaldsstakken, dvs.den viser dig alle de funktioner, der blev påberåbt for at få dig på det sted i kode. Derfor er det rigtige call-site den anden funktion fra toppen i denne call-stack (dvs.inden for funktionen påkaldelse forud for den funktion, der i øjeblikket udføres).

således kan du finde opkaldsstedet for en funktion på 2 måder:

  1. ved manuelt at spotte det sted, hvor funktionen blev påberåbt i et givet stykke kode, eller
  2. ved at se på call-stakken (helst ved hjælp af debuggerværktøjer).

når du er i tvivl (og generelt også), skal du altid bruge call-stack til korrekt at identificere call-site for en funktion.

det er det! Dette er alt hvad du behøver at vide for at finde opkaldsstedet for en funktion!

næste trin:

Den næste artikel i denne serie, JavaScript: Lær ‘dette’ – så hvad er en konstruktør alligevel?, fokuserer på at forstå konstruktører i JS.

tak for læsning. 🙂

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.