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

jest to pierwszy artykuł z serii, który robię, który koncentruje się na nauce tego, co this naprawdę jest w JS. Aby poprawnie określić, z czym wiąże sięthis, powinniśmy najpierw zrozumieć kilka podstawowych pojęć, które będą nam potrzebne przy określaniu this Wiązanie w JS, a wiedza o miejscu wywołania funkcji jest jednym z tych kluczowych pojęć.

zanim zagłębimy się w to, czym jest call-site funkcji, spróbujmy najpierw zrozumieć, dlaczego musimy znać call-site w pierwszej kolejności. Powody są następujące:

  1. prawdopodobnie jest to coś bardzo łatwego do’ site ’ w kawałku kodu. Czasami jednak pewne wzorce kodowania mogą ukryć prawdziwą stronę połączenia. Tak więc, aby usunąć wszystkie niejasności związane z tym tematem, musisz zrozumieć call-site (bardzo wyraźnie).
  2. jest to jedyna rzecz, która ma znaczenie, jeśli chcesz zrozumieć, jak działa Wiązaniethis.

mając to na uwadze, przyjrzyjmy się teraz miejscu wywołania funkcji.

Ogólnie Rzecz Biorąc, miejscem wywołania funkcji jest „miejsce, z którego dana funkcja jest wywoływana w danym fragmencie kodu”. Tak więc idź do tego miejsca i wiesz, gdzie jest strona wywołania tej funkcji!

zajrzyjmy teraz, za pomocą poniższego fragmentu kodu, do miejsca wywołania funkcji:

To było proste! Ale jest mały problem z tym sposobem znalezienia strony wywołania: czasami może być trudno wykryć ją ręcznie (na przykład: wyobraź sobie 1000 linii kodu i musisz znaleźć stronę wywołania ręcznie!).

tutaj pojawia się stos połączeń. Co to jest call-stack? Jest to stos (jak sama nazwa wskazuje). Czego? Funkcji. Jakie funkcje? Wszystkich funkcji, które zostały wywołane. Za co? Aby doprowadzić cię do miejsca, w którym jesteś teraz w swojej egzekucji (tj. aktualnego momentu egzekucji).

Jeśli spojrzysz na swój stos połączeń, to prawdziwa strona połączeń znajduje się w wywołaniu funkcji przed funkcją, która jest obecnie wykonywana.

teraz, użyjmy call-stack, aby znaleźć strony wywołań funkcji w tym samym kodzie użytym powyżej:

Quick Tip: Zamiast ręcznie ustalać kolejność wywoływania funkcji (jest to podatne na błędy i męczące), powinieneś użyć narzędzia debuggera w przeglądarce, aby zobaczyć stos wywołań. Debugger zatrzyma się na linii ustawionej przez Ciebie punktu przerwania i pokaże Ci stos wywołań, tj. pokaże wszystkie funkcje, które zostały wywołane, aby uzyskać w tej lokalizacji w kodzie. Stąd, prawdziwe wywołanie jest drugą funkcją od góry w tym stosie wywołania (tzn. wewnątrz wywołania funkcji przed funkcją, która jest obecnie wykonywana).

w ten sposób można znaleźć wywołanie funkcji na 2 sposoby:

  1. poprzez ręczne wykrywanie lokalizacji, w której funkcja została wywołana w danym fragmencie kodu, lub
  2. poprzez patrzenie na stos wywołań (najlepiej przy użyciu narzędzi debugera).

w przypadku wątpliwości (i ogólnie), Zawsze używaj stosu wywołań, aby poprawnie zidentyfikować miejsce wywołania funkcji.

To jest to! To wszystko, co musisz wiedzieć, aby znaleźć stronę wywołania funkcji!

kolejne kroki:

następny artykuł z tej serii, JavaScript: Learn 'this’ – czyli czym w ogóle jest konstruktor?, koncentruje się na zrozumieniu konstruktorów w JS.

dzięki za przeczytanie. :- )

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.