Deklaracja i tworzenie obiektów klas w JavaScript

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 3801 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.

Propozycje książek
tytuł: JavaScript i jQuery. Interaktywne strony WWW dla każdego. Podręcznik Front-End Developera  autor: Jon Duckett

Tytuł:

JavaScript i jQuery. Interaktywne strony WWW dla każdego. Podręcznik Front-End Developera

Autor:

Jon Duckett

tytuł: JavaScript od pierwszej linii kodu. Błyskawiczna nauka pisania gier, stron WWW i aplikacji internetowych autor: Laurence Lars Svekis, Maaike van Putten, Rob Percival

Tytuł:

JavaScript od pierwszej linii kodu. Błyskawiczna nauka pisania gier, stron WWW i aplikacji internetowych

Autor:

Laurence Lars Svekis, Maaike van Putten, Rob Percival

tytuł: JavaScript funkcyjnie. Zrównoważone, pragmatyczne programowanie funkcyjne w JavaScript autor: Kyle Simpson

Tytuł:

JavaScript funkcyjnie. Zrównoważone, pragmatyczne programowanie funkcyjne w JavaScript

Autor:

Kyle Simpson

tytuł: JavaScript dla dzieci dla bystrzaków autor: Chris Minnick, Eva Holland

Tytuł:

JavaScript dla dzieci dla bystrzaków

Autor:

Chris Minnick, Eva Holland

tytuł: Modularny JavaScript dla zaawansowanych autor: Nicolas Bevacqua

Tytuł:

Modularny JavaScript dla zaawansowanych

Autor:

Nicolas Bevacqua

tytuł: JavaScript w praktyce. Stwórz twitterowego bota, system sygnalizacyjny LED i inne projekty z użyciem Node.js i Raspberry Pi autor: Lynn Beighley

Tytuł:

JavaScript w praktyce. Stwórz twitterowego bota, system sygnalizacyjny LED i inne projekty z użyciem Node.js i Raspberry Pi

Autor:

Lynn Beighley

tytuł: Matematyka dla programistów JavaScript autor: Jacek Piechota

Tytuł:

Matematyka dla programistów JavaScript

Autor:

Jacek Piechota

tytuł: JavaScript i jQuery. Interaktywne strony WWW dla każdego. Podręcznik Front-End Developera autor: Jon Duckett

Tytuł:

JavaScript i jQuery. Interaktywne strony WWW dla każdego. Podręcznik Front-End Developera

Autor:

Jon Duckett

tytuł: ECMAScript 6. Przewodnik po nowym standardzie języka JavaScript autor: Nicholas C. Zakas

Tytuł:

ECMAScript 6. Przewodnik po nowym standardzie języka JavaScript

Autor:

Nicholas C. Zakas

tytuł: JavaScript i wzorce projektowe. Programowanie dla zaawansowanych. Wydanie II autor: Simon Timms

Tytuł:

JavaScript i wzorce projektowe. Programowanie dla zaawansowanych. Wydanie II

Autor:

Simon Timms

W związku z tym, że firma Helion nie wywiązuje się z swoich zobowiązań naliczania prowizji za każdą zakupioną książkę a kontakt z ową frmą jest nie możliwy autor strony zmuszony został do zablokowania linkowania książek. Za wszelkie niedogodności z tym związane z góry przepraszam i obiecuję włączenie linkowania gdy tylko sprawa zostanie wyjaśniona