JavaScript: Learn ‘this’ -finding CALL-SITE of a function

acesta este primul articol dintr-o serie pe care o fac, care se concentrează pe învățarea a ceea ce this este într-adevăr în JS. Pentru a determina corect la ce se leagă this, ar trebui să înțelegem mai întâi câteva concepte de bază de care vom avea nevoie atunci când determinăm this legarea în JS și cunoașterea care este site-ul de apel al unei funcții este unul dintre acele concepte cruciale.

înainte de a ne scufunda în ceea ce este site-ul de apel al unei funcții, să încercăm mai întâi să înțelegem de ce trebuie să cunoaștem site-ul de apel în primul rând. Motivele sunt următoarele:

  1. este probabil ceva foarte ușor de ‘site’ într-o bucată de cod. Cu toate acestea, uneori, anumite modele de codificare pot ascunde site-ul real de apel. Astfel, pentru a elimina toate ambiguitățile legate de acest subiect, trebuie să înțelegeți call-site-ul (foarte clar).
  2. este singurul lucru care contează dacă doriți să înțelegeți cum funcționează legareathis.

acestea fiind spuse, să înțelegem acum call-site-ul unei funcții.

În general, site-ul de apel al unei funcții este ‘locul de unde funcția particulară este apelată într-o anumită bucată de cod’. Astfel, du-te la acea locație și știi unde call-site-ul de această funcție este!

Să acum, prin următorul fragment de cod, la fața locului în cazul în care call-site-uri de funcții sunt:

a fost ușor! Dar există o mică problemă cu acest mod de a găsi call-site-ul: uneori, poate fi dificil să-l fața locului manual (de exemplu: imaginați-vă 1000s de linii de cod și aveți pentru a găsi call-site-ul manual!).

aici intră în joc stiva de apeluri. Ce este un call-stack? Este o stivă (așa cum sugerează și numele). De ce? De funcții. Ce funcții? Dintre toate funcțiile care au fost invocate. Pentru ce? Pentru a vă duce acolo unde vă aflați chiar acum în execuția dvs. (adică momentul actual de execuție).

dacă vă uitați la stiva de apeluri, atunci site-ul real de apeluri se află în invocarea funcției înainte de funcția care se execută în prezent.

acum, să folosim call-stack pentru a găsi call-site-urile de funcții în același cod folosit mai sus:

sfat rapid: În loc să aflați manual ordinea în care au fost invocate funcțiile (este predispusă la erori și obositoare), ar trebui să utilizați instrumentul debugger în browserul dvs. pentru a vedea stiva de apeluri. Depanatorul se va opri la linia pe care ați setat punctul de întrerupere și vă va arăta stiva de apeluri, adică vă va arăta toate funcțiile care au fost invocate pentru a vă aduce în acea locație în cod. Prin urmare, site-ul real de apel este a doua funcție de sus în această stivă de apeluri (adică în cadrul invocării funcției înainte de funcția care se execută în prezent).

astfel, puteți găsi call-site-ul unei funcții în 2 moduri:

  1. prin identificarea manuală a locației în care funcția a fost invocată într-o anumită bucată de cod sau
  2. prin analizarea stivei de apeluri (de preferință folosind instrumente de depanare).

când aveți dubii (și, în general, de asemenea), utilizați întotdeauna stiva de apeluri pentru a identifica corect site-ul de apel al unei funcții.

asta e! Acest lucru este tot ce trebuie să știți pentru a găsi call-site-ul unei funcții!

pașii următori:

următorul articol din această serie, JavaScript: aflați ‘acest’ – deci, ce este un CONSTRUCTOR oricum?, se concentrează pe înțelegerea constructorilor în JS.

Vă mulțumim pentru lectură. :- )

Lasă un răspuns

Adresa ta de email nu va fi publicată.