Jesteś tutaj: webmade.org >> kursy online >> kurs javascript >> Część 4
autor: Piotr Rzeźniczak, ostatnia modyfikacja: 2007-06-25
Czasami zachodzi sytuacja, w której potrzeba nam "zmiennej" bardziej szczegółowo opisującej rzecz, stan, osobę czy zjawisko której dotyczy. Jeżeli opisujemy np. samochód, to nie wystarczy nam, gdy podamy tylko rok produkcji, tylko jego markę, lub maksymalną prędkość, czy pojemność silnika.
Chcielibyśmy mieć możliwość opisania wszystkich właściwości samochodu, jakie nam będą potrzebne i jednocześnie przy tym nie robić bałaganu w kodzie, poprzez wiele niepotrzebnych zmiennych, lub innych zastępczych rozwiązań, typu tablice. Do tego właśnie służą obiekty. Odzwierciedlają one "coś" ze świata rzeczywistego w świat komputera.
Obiekty są konstrukcjami programistycznymi posiadającymi tzw. właściwości, którymi mogą być zmienne lub inne obiekty. Z obiektami powiązane są funkcje wykonujące operacje na jego właściwościach, a nazywamy je metodami.
Do właściwości danego obiektu możemy się dostać używając zapisu:
nazwa_obiektu.nazwa_właściwości
Np. jeśli mamy obiekt "auto", może on mieć właściwości: marka, rok, cena. Aby określić właściwości naszego obiektu będziemy musieli wykonać instrukcje:
auto.marka="Opel Omega" auto.rok=1996 auto.cena=25000
Można również skorzystać z innej notacji w zależności od upodobań: nazwa_obiektu[nazwa_właściwości] np. auto[cena]
Aby korzystać z obiektów w naszych skryptach, musimy go zdefiniować, tworząc funkcję zwaną konstruktorem, a następnie powołać do życia za pomocą operatora new.
function auto(marka,rok,cena,wlasciciel) { // w sekcji HEAD this.marka=marka this.rok=rok this.cena=cena this.wlasciciel=wlasciciel } function osoba(imie,nazwisko) { this.nazwisko=nazwisko this.imie=imie } posiadacz=new osoba("Jan","Kowalski") // dalej w kodzie HTML bryka=new auto("Ferrari",2003,200000,posiadacz) document.write("Marka: "+ bryka.marka +" rocznik: "+ bryka.rok +" cena: "+ bryka.cena) document.write("<br>Wlasciciel: "+ auto.wlasciciel.imie +" "+ auto wlasciciel.nazwisko)
Jednak takie wyciąganie danych z obiektów wcale nie czyni ich wygodnymi w użyciu - właśnie dlatego mamy dodatkowo możliwość zdefiniowania metod. Do naszego przykładu dodamy metody wyświetlające właściwości naszych obiektów. Modyfikujemy kod tak jak poniżej:
function pokaz_auto() { dane="Marka: "+ this.marka +" Rocznik: "+ this.rok +" Cena: "+ this.cena +"<br>" document.write(dane) this.wlasciciel.pokaz() // metoda pokaz obiektu osoba } function pokaz_osoba() { dane="imie: "+ this.imie +" nazwisko: "+ this.nazwisko +"<br>" document.write(dane) } function auto(marka,rok,cena,wlasciciel) { this.marka=marka this.rok=rok this.cena=cena this.wlasciciel=wlasciciel this.pokaz=pokaz_auto // dodajemy metode pokazujaca dane naszego auta } function osoba(imie,nazwisko) { this.nazwisko=nazwisko this.imie=imie this.pokaz=pokaz_osoba // dodajemy metode pokazujaca nasza osobe } // tu koniec funkcji pisanych w sekcji HEAD // potem gdzieś gdzie nam potrzeba: posiadacz=new osoba("Jan","Kowalski") bryka=new auto("Ferrari",2003,200000,posiadacz) bryka.pokaz() // pokazuje nam wszystkie wlasciwosci naszego obiektu
Jak widać powyżej, stworzenie metod wyświetlających dane samochodów, procentuje w wypadku, gdy piszemy skrypty na stronę wielokrotnie wyświetlającą wiele różnych samochodów - np. z prywatnej kolekcji ;) Wtedy już martwimy się tylko o odpowiednie stworzenie obiektów, a całe wyświetlanie robi za nas jego metoda.
Piotr Rzeźniczak
szukaj: obiekty JavaScript kurs JavaScript
Zagadnienia poruszane w tej części kursu:
© 2004-2008 copyright by webmade.org