Czy pamiętasz, kiedy uczysz się JavaScript? Jaki był moment, kiedy nagle go „dostałeś”?(Na przykład mój aha-moment CSS miał miejsce, gdy dowiedziałem się o modelu pudełkowym ...)
Pytam dlatego, że uczę się JS przez 6 tygodni, ale nadal uważam, że jest to dość mylące. Oto cytat z czegoś, co ostatnio czytałem na SO:
„..funkcje działają podobnie jak wartości, ponieważ metoda jest właściwością obiektu, który ma wartość funkcji (która jest również obiektem).”
Jestem ciekawy, czy na początku byłeś zdezorientowany i co sprawiło, że to zrozumiałeś.
(Czytam Sitepoints „Simply JavaScript”, książkę „Eloquent JavaScript” i śledzę samouczek Lynda Essential JavaScript. Nie mam doświadczenia w programowaniu i byłem okropny z matematyki;)
Dzięki!
Odpowiedzi:
Myślę, że największym momentem dla mnie było, kiedy w pełni zrozumiałem:
Zmienne wartości mogą być dowolne, łącznie z funkcjami
źródło
Dla mnie to było, kiedy zrozumiałem, że kontekst (na co
this
wskazuje) funkcji można zmienić dowolniehttp://www.digital-web.com/articles/scope_in_javascript/
źródło
Zgadzam się z tym, czego dotyczyły niektóre inne odpowiedzi; Momentem A-ha było dla mnie, kiedy zrozumiałem, co to było zamknięcie .
Zamieściłem odpowiedź na pytanie Co to jest zamknięcie? aby to wyjaśnić.
Bez zrozumienia zamknięć JavaScript jest dość ograniczonym językiem, z kilkoma przyjemnymi skrótami składniowymi, takimi jak
[]
tablice i JSON ({}
dla obiektów) oraz w kontekście przeglądarki DOM (window
/document
).Jednak po zrozumieniu zamknięć pojawia się wiele zrozumienia :
Zasoby
źródło
Wydaje mi się, że najważniejszym językiem „Aha dla mnie w Javascript był
Na wszystkie te tematy powinieneś znaleźć mnóstwo zasobów w Internecie.
(I nie sądzę, że wszystko stanie się całkowicie logiczne: JavaScript jest mylący)
źródło
javascript był dla mnie trudny, kiedy po raz pierwszy zacząłem się go uczyć kilka lat temu, ponieważ zacząłem uczyć się tworzenia stron WWW od strony serwera (php i perl).
Nie chodziło mi tak bardzo o składnię, OOP czy cokolwiek, co mi umknęło, ale o javascript napędzany na żywo i zdarzeniami - wychodząc od „zrób to i to i tamto i podaj to, a skończysz”, aby „to zrobić” i to i tamto, a następnie jesteśmy w stałym stanie oczekiwania na coś, co się wydarzy i odpowiadamy, dopóki użytkownik nie opuści strony ” To naprawdę rzuciło mnie na pętlę.
Nie sądzę, żebym mógł wymienić coś konkretnego, co naprawdę sprawiłoby, że zatonął (brak definitywnego momentu „aha!” - gdybym musiał wymienić konkretny moment, powiedziałbym, kiedy uczyłem się AJAX dla skryptu sugestii wyszukiwania, ale IMO to po prostu arbitralne), ale kiedy w końcu zrozumiałem różnicę, wszystko stało się o wiele łatwiejsze :)
źródło
Kiedy w końcu zrozumiałem, że mogę przedefiniować dowolną część języka na dowolne bzdury, jakie chcę. Pod tym względem jest jeszcze bardziej wydajny niż C. Na przykład, jeśli nie podoba mi się standardowa
toString()
funkcja, to zaimplementuję własną:źródło
Kiedy zdałem sobie sprawę, że możesz ustawić właściwość na obiekcie funkcji.
Również kiedy w końcu zrozumiałem, czym był prototyp.
źródło
I chwila a-ha, kiedy w końcu złapiesz się na te wyniki.
źródło
Aha chwila nr 1, dla mnie: Zrozumienie, że JavaScript, język, różni się od jego podstawowego zastosowania: dynamicznego HTML i programowania WWW po stronie klienta. Byłbym sfrustrowany JavaScriptem, kiedy naprawdę byłem sfrustrowany z powodu DOM i niezgodności przeglądarki.
Aha moment # 2: Zrozumienie, że dziedzictwo można wykonać na wiele sposobów. Typowe dziedziczenie klasowe jest tylko jedno. Są inne, a mianowicie oparte na prototypach (styl używany w JavaScript).
W odniesieniu do nr 1 nie mogę się oprzeć poleceniu JavaScript: The Good Parts . JavaScript traktuje JavaScript jako dobry język sam w sobie.
źródło
Brak określania zakresu i podnoszenia bloków.
źródło
To tylko Schemat ze składnią.
To był dla mnie duży.
źródło
jQuery był dla mnie momentem „a-ha”. Składnia była dobrze znana po dużym doświadczeniu ze składnią LINQ / lambda w języku C #.
źródło