Strona główna kursu

JavaScript - programowanie obiektowe w JavaScript

DZIAŁANIE: brak :)
 

Kod:

Kurs JavaScript, Kurs Ajax, Kurs PHP

Ewentualne Objaśnienia:

Tutaj chciałbym omówić zagadnienie programowania obiektowego w języku JavaScript . Programowanie obiektowe to bardzo ważna rzecz i każdy kto poważnie myśli o programowaniu powinien dobrze poznać to zagadnienie - chociaż jeśli chodzi o JS to jest on sam bardzo obiektowym językiem. Kilka słów o programowaniu obiektowym tytułem takiego wstepu znajdziesz w moim kursie php --> tutaj .

JavaScript pozwala traktować funkcję jako obiekt - jeśli miałeś styczność z programowaniem obiektowym w innym języku zapewne wydaje Ci się to dziwne :-) Jest to wykorzystywane do tworzenia klas ( i nie tylko ). Przykład tego typu działania widzicie powyżej (KOD1).
KOD2 pokazuje nam jak stworzyć nowy obiekt, w tym przypadku jest on przypisany do zmiennej jednak nie musi tak być, można od razu podać go na przykład jako parametr danej funkcji.
KOD3 pokazuje nam możliwości odwoływania się do pól danego obiektu. KOD4 pokazuje jak uzyskać dostęp/określić wszystkie pola danego obiektu - tutaj mamy do czynienia z nową składnią funkcji for - jest to przydatna rzecz, jak widzicie zmiennej i zostanie przypisana nazwa danego pola (zmiennej), a zapis obiekt[i] będzie wartością danego pola. KOD5 wiąże się z kopiowaniem obiektów jednak nie jest to tak naprawdę skopiowanie obiektu ob1 ponieważ w JS przypisywanie odbywa się przez referencję czyli po Polsku mówiąc zmienne ob1 i ob2 w przykładzie będą cały czas wskazywać na jeden i ten sam obiekt, czyli zmiana w ob1 spowoduje zawsze zmiany w ob2. KOD6 dopiero pokazuje nam jak poprawnie wykonać kopię danego obiektu - jest to proste należy do nowego obiektu skopiować wszystkie pola danego (kopiowanego) obiektu - w tym celu dodajemy do tzw. prototypu obiektu Object funkcję, która zwraca nowy obiekt ze skopiowanymi elementami obiektu kopiowanego. KOD7 - użycie operatora new do wywołania funkcji powoduje, że staje się ona wtedy konstruktorem obiektu, czyli krótko mówiąc w naszym przykładzie tworzony jest nowy obiekt oraz wywoływana jest w jego kontekście funkcja Ob(), która spowoduje ustawienie pola/zmiennej komunikat naszego nowego obiektu na wartość "siema!" . Jak widzicie w JavaScript nie ma klas tworzonych przez słowo class jak w wielu innych językach i podziału na metody i zmienne publiczne, prywatne czy chronione, ale dzięki funkcją JS możemy uzyskać bardzo dużą funkcjonalność obiektowości. KOD8 związany jest z tzw. prototypami - na ich podstawie w JS są tworzone obiekty, a każdy nowy obiekt jest kopią wcześniej stworzonego wzoru obiektu — prototypu. Bardzo dobrze ilustruje to przedstawiony przykład. KOD9 związany jest z tworzeniem metod i zmiennych prywatnych, czyli takich do których dostęp ma jedynie dana klasa - z zewnątrz nie możemy się do takich właściwości odwoływać. Jak mówiłem w JS nie ma modyfikatorów zasięgu protected, public i private. Standardowo każda metoda i pole (zmienna) są tworzone jako publiczne.
Aby uzyskać coś na wzór metody czy zmiennej prywatnej, należy to zadeklarować w konstruktorze co powoduje, że jest to widoczne tylko dla konstruktora, a każdy obiekt danej klasy będzie taką funkcję/zmienną prywatną posiadał - przykład właśnie widzicie w kodzie 9. Dalej mamy 2 przykłady potwierdzające 'ukrycie' naszej funkcji prywatna(). KOD10 - pokazuje nam jak zatem uzyskać dostęp do zmiennych czy metod prywatnych - jest to bardzo proste należy daną metodę, która ma mieć dostęp do składowych prywatnych zadeklarować w konstruktorze - tak jak w przykładzie funkcja dostepdoprywatnej() staje się metodą obiektu i równocześnie ma dostęp do naszej 'tajnej' funkcji prywatna(). KOD11 pokazuje nam dziedziczenie w JS - jest ono realizowane przez prototypy. Tak jak w przykładzie - chcemy utworzyć klasę "Pochodna", która ma dziedziczyć po klasie "Bazowa" więc ustawiamy "Pochodna.prototype" na nowa instancje klasy Bazowa. KOD12 to inny sposób na uzyskaniedziedziczenia w JavaScripcie dla osób przyzwyczajonych do programowanie w Javie czy C++ mogą  zmodyfikować prototyp obiektu Object w przedstawiony sposób, a następnie w funkcjach konstruktora korzystać z metody parent(). KOD13 pokazuje nam przykład na obsługę wyjątków w JS - jak widzicie jest to bardzo bardzo podobne jak na przykład w PHP - 189wyjatki_klasa_exception.php5 .


Bez bicia przyznaje, że przy pisaniu tej lekcji oparłem się o następujące strony :
- http://kurs.browsehappy.pl/JavaScript/JavaScript
- http://webhosting.pl/kategorie/programowanie/2007_10/podstawy_programowania_obiektowego_w_jezyku_javascript