środa, 21 marca 2012

O podstawach języka JavaScript słów kilka (ponownie)

Temat odgrzewany jak poobiednia kiełbasa. Ale prawda jest taka, że bez dobrej znajomości podstaw danego języka nie jesteśmy (my, w sensie juniorów) w stanie robić czegoś dobrze przez dłuższy czas. Im więcej czasu poświęcać będziemy na nasz kod, tym bardziej będzie się on rozszerzał, a co za tym idzie - rosnąc będzie prawdopodobieństwo, że popełnimy znaczący, trudny do zdiagnozowania błąd wynikający z braku zrozumienia podstawowych zasad rządzących danym językiem. Jestem przekonany, że jeszcze 2 lata temu słysząc, że ktoś boryka się z kłopotami z JavaScript'em parsknąłbym i zapytał - "a co może być takiego trudnego w JS?!". Otóż jak się okazuje wiele rzeczy może być trudnych i nieintuicyjnych, co nie znaczy, że język ten jest zły.

Półtorej roku temu, w trakcie moich letnich praktyk pisałem na blogu o filmiku z serii Google Tech Talks, w którym przez trochę ponad godzinę Miško Hevery opowiada o podstawach JavaScriptu oraz manipulacjach obiektem DOM. W tamtym czasie podszedłem to tematu chyba zbyt swobodnie, co stwierdziłem niedawno pracując nad kolejnym projektem z udziałem JavaScriptu. Ponownie te same błędy, znów te same problemy. Niestety - język ten ma kilka specyficznych elementów, które umykają człowiekowi, jeśli dostatecznie dużo nie spędzi się czasu pisząc kod bezpośrednio korzystający lub omijający te niuanse. Dlatego właśnie postanowiłem powrócić do lektury, do czego zachęcam także Was.


To, czego zabrakło w poprzednim wpisie to krótkie podsumowanie prezentacji przez prelegenta. Oto ono:

  • JavaScript jest obiektowy jedynie w przyjętej konwencji, jest to typowy język funkcyjny
  • Obiektem domyślnym jest zawsze obiekt window
  • Brak słówka kluczowego this oznacza przypisanie zmiennej do obiektu window
  • Referencja funkcji gubi this - staje się nim obiekt window. Aby temu zapobiec należy korzystać z bindingu - metody call() oraz apply()
  • Skrypt jest wywoływany w jednym wątku a wywołanie funkcji zwraca wynik natychmiast - konieczność stosowania callback'ów
Uzbrojony w tą wiedzę zamierzam w niedalekiej przyszłości przeczytać (i oczywiście opisać na blogu) książkę Douglasa Crockforda - "JavaScript: The Good Parts" wydawnictwa O'Reilly.

Do następnego razu!