Jason. Cała informatyka w jednym miejscu!

Jeśli myśleliście, że JavaScript nie wspiera paradygmatu obiektowego, to jesteście w błędzie. Całkiem mocno pochylił się w jego stronę i to do stopnia jawnego wspierania klas. "class" w języku JavaScript istnieje i to całkiem na serio! A teraz poznajemy szczegóły!

"CLASS" W JĘZYKU JAVASCRIPT I WSZYSTKO JASNE!

Mały "polecony" dla czytelników znających dowolny język obiektowy :D:

Drodzy specjaliści od Javy, C# i tym podobnych języków obiektowych,
Jestem zmuszony uprzedzić niektórych z Was z racji tego, iż wyobraźnia może wprowadzić w błędne przeświadczenia. Klasy w języku JavaScript NIE SĄ tymi samymi klasami jakie widzicie w poznanych już językach! Różnią się wyglądem i składnią o wiele bardziej niż choćby Java kontra C#. Proszę o wzmożoną czujność i baczną obserwację podczas prezentowania przykładów jakie zostaną zawarte w niniejszej treści.
Pozdrawiam

Myślę, że nie muszę się powtarzać. Zaczynajmy więc!

BUDOWA KLASY

Dobra wiadomość jest taka, że jak "class" było w Javie i w "CSharpie", tak jest i w języku JavaScript:

class MyClass {
	
}

Klamerki też takie same definiujące "pole widzenia". Ale już konstruktor klasy definiuje się inaczej:

class MyClass {
	constructor() {
		// instrukcje
	}
}

Znajdziecie go po słowie kluczowym "constructor" (nietrudno się domyślić...). Konstruktor to metoda klasy wywoływana w chwili tworzenia obiektu na jej podstawie. Jest to pierwsza czynność wykonywana podczas "narodzin" instancji (obiektu). Konstruktor jak to u wyżej wymienionych "kolegów", także może przyjmować parametry do późniejszej inicjalizacji:

class MyClass {
	constructor(x, y) {
		this.x = x;
		this.y = y;
	}
}

Uwaga dla znawców innych języków! "class" w języku JavaScript nie wspiera przeciążania konstruktorów! Wtedy musicie zastosować "bypass" w postaci przekazywania obiektu jako parametru i przypisywania wartości domyślnych w przypadku nieznalezienia pożądanej wartości:

class MyClass {
	constructor(values) {
		this.x = values.x || 50;
		this.y = values.y || 100;
		this.z = values.z || 904;
	}
}

itd. Niekonwencjonalne użycie operatora alternatywy do zwracania wartości wytłumaczyłem w artykule o boolowskim typie danych, więc sięgnijcie jeśli zapis jest enigmatyczny.

DANE SKŁADOWE

A dane składowe? Tak samo jak w atrybutach obiektu:

class MyClass {
	constructor() {
		this.x = 60;
	}
}

albo tak:

class MyClass {
	x = 60;
}

METODY

Metody też mogą istnieć, a kto powiedział że nie ;)? Tutaj też panuje różnica w zapisie i w tej sytuacji nie wstawiamy "function":

class MyClass {
	doSomething() {
		// instrukcje
	}
}

tylko podajemy samą nazwę z parą nawiasów okrągłych dla potencjalnych parametrów. To jest kolejny wyjątek jakim się wyróżnia "class" w języku JavaScript. I klamerki! Klamerki to rzecz niezbędna!

Celem wywołania metody, konieczne jest utworzenie instancji obiektu, w taki sam sposób jak się to robi w innych językach obiektowych (w kolejnym nagłówku jest przykład, jeśli ktoś nie ma pojęcia).

CHCĘ ZACHOWAĆ PRYWATNOŚĆ

Składowe mogą być też prywatne. Wiecie jak to się robi?

class MyClass {
	#x;
	
	#doSomething() {
		// instrukcje
	}
}

Nie, nie wstawiamy żadnych modyfikatorów dostępu, jak mogliście pomyśleć! Znak "hash'a" przed nazwą "uprywatyzowuje" składową. Dotyczy to zarówno danych, jak i metod. Da to taki efekt, że nie będzie można się odwołać do składowej prywatnej na zewnątrz kodu. W żaden sposób! Ukrywanie implementacji jest istotną rzeczą dla programowania obiektowego.

PRZYKŁAD KODU ŹRÓDŁOWEGO

Przypomnijmy sobie przykład z graczem:

class Player() {
	constructor() {
		this.health = 100;
	}
	
	attack() {
		console.log("Gracz atakuje!");
	}
}

const player = new Player();

Inicjalizacja właściwości "health" odbywa się w konstruktorze klasy. Klasa przyjmuje metodę atakowania przez gracza. Poniżej jest inicjacja obiektu gracza na podstawie klasy, która jest w postaci znanej z innych języków obiektowych. Podobieństwo na pewno upraszcza naukę :)!

Słowo kluczowe "class" w języku JavaScript

Klasa może zostać utworzona w języku JavaScript przy pomocy tego samego słowa jakie możemy znać z innych języków, "class"!


Artykuł nieduży, ale też i nie skandalicznie mały. Garść informacji, przykłady i sposób użycia. To wystarczy początkującym, żeby z tego skorzystać i się nie przestraszyć :D!

PODOBNE ARTYKUŁY