Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 4025 razy

JavaScript, jeżeli chodzi o deklarowanie klas ma dość nietuzinkowe podejście, a to dlatego, że deklarację klasy w JavaScript tworzy się za pomocą słowa kluczowego function. Przykład implementacji:

function Person(_name, _surname, birth_year, birth_month, birth_day){ this.name = _name; // pole publiczne klasy this.surname = _surname; var birthday; // pole prywatne klasy przechowujące datę urodzin delikwenta var checkBirthDay = function(birth_year, birth_month, birth_day){ // prywatna metoda sprawdzająca, czy data urodzin jest poprawna var now = new Date(); if(now.getFullYear() < birth_year){ alert("Niepoprawna data urodzin (rok się nie zgadza)"); return false; }else if(now.getFullYear() == birth_year && now.getMonth() + 1 < birth_month){ alert("Niepoprawna data urodzin (miesiąc się nie zgadza)"); return false; }else if(now.getFullYear() == birth_year && now.getMonth() + 1 == birth_month && now.getDate() < birth_day){ alert("Niepoprawna data urodzin (dzień się nie zgadza)"); return false; }else{ return true; } } this.setBirthDay = function(birth_year, birth_month, birth_day){ // publiczna metoda ustawiająca datę urodzin if(checkBirthDay(birth_year, birth_month, birth_day)){ // tutaj wywołanie prywatnej metody klasy birthday = new Date(birth_year, birth_month - 1, birth_day); }else{ birthday = new Date(); } } this.setBirthDay(birth_year, birth_month, birth_day); // wywołanie publicznej metody klasy w jej wnętrzu this.getAge = function(){ // publiczna metoda zwracająca wiek delikwenta return new Date().getFullYear() - birthday.getFullYear(); } this.showPersonData = function(){ // publiczna metoda alert("Imię: " + this.name + "; nazwisko: " + this.surname + " data urodzin: " + ("0" + birthday.getDate()).substr(-2) + "-" + ("0" + (birthday.getMonth() + 1)).substr(-2) + "-" + birthday.getFullYear() + "; wiek: " + this.getAge()); }; } var person = new Person("Marian", "Paździoch", 1990, 1, 1); // utworzenie nowego obiektu klasy za pomocą słowa kluczowego new person.showPersonData(); // wywołanie publicznej metody klasy

Coby nie pisać zbyt wiele, w powyższym kodzie fragment:

this.name = _name; // pole publiczne klasy this.surname = _surname;

tworzy publiczne pola klasy, które dostępne będą zarówno wewnątrz jak i na zewnątrz klasy. Z kolei prywatne pole klasy tworzy ta linijka:

var birthday; // pole prywatne klasy przechowujące datę urodzin delikwenta

Metody publiczne zostały utworzone w linii 23, 33 oraz 37, natomiast prywatna metoda w linii 7.

Wywołanie konstruktora klasy ma miejsce w tym fragmencie kodu:

var person = new Person("Marian", "Paździoch", 1990, 1, 1); // utworzenie nowego obiektu klasy za pomocą słowa kluczowego new

Możliwe jest również rozszerzenie deklaracji klasy o kolejne metody w następujący sposób:

Person.prototype.showNameAndSurname = function(){ alert("Imię: " + this.name + "; nazwisko: " + this.surname); } person.showNameAndSurname(); // wywołanie metody publicznej klasy Person

W ten sam sposób można dodać do deklaracji klasy publiczne pole.

Layout wykonany przez autora strony, wszelkie prawa zastrzeżone. Jakiekolwiek użycie części lub całości grafik znajdujących się na tej stronie bez pisemnej zgody jej autora surowo zabronione.