JavaScript - programowanie obiektowe w JavaScript
| DZIAŁANIE: | brak :) |
Kod:
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