Jeżeli myślisz, że JavaScript nie wspiera paradygmatu obiektowego, to jesteś w błędzie 🙂. Całkiem mocno pochylił się w jego stronę i to do stopnia jawnego wspierania klas 🥳. Słowo kluczowe "class" w języku JavaScript istnieje i to całkiem na serio 👍! A teraz poznaj szczegóły!

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

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

Drogi specjalisto od Javy, C# i tym podobnych języków obiektowych,
Jestem zmuszony uprzedzić Cię 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 widziałeś w innych językach! Różnią się wyglądem i składnią o wiele bardziej, niż możesz teraz przypuszczać. Proszę Cię o wzmożoną czujność i baczną obserwację podczas prezentowania przykładów jakie zostaną zawarte w niniejszej treści.

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

BUDOWA KLASY

Dobra wiadomość jest taka, że jak "class" jest w języku Java i w C#, tak jest i w języku JavaScript 👇:

class MyClass {
	
}

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

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

Znajdziesz go po słowie kluczowym "constructor" ℹ️. Konstruktor to metoda klasy wywoływana w chwili tworzenia obiektu na jej podstawie. Jest to pierwsza czynność wykonywana podczas "narodzin" instancji (obiektu) używając słowa kluczowego "new".

Konstruktor, jak to u wyżej wymienionych "kolegów", 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 (zdefiniowanie dwóch/więcej metod o tej samej nazwie)! Wtedy musisz zastosować obejście w postaci przekazania obiektu jako parametru i przypisania 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 || 200;
	}
}

Niekonwencjonalne użycie operatora alternatywy do zwracania wartości wytłumaczyłem w artykule o boolowskim typie danych, więc sięgnij tam po wyjaśnienia, jeśli zapis jest dla Ciebie enigmatyczny 🔍.

DANE SKŁADOWE

Dane składowe (zmienne w klasie) określamy tak samo, jak w atrybutach obiektu. Piszemy tak 👇:

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

albo tak:

class MyClass {
	x = 50;
}

Obie formy są poprawne ✅.

METODY

Metody też mogą występować, jak w pozostałych językach wspierających paradygmat obiektowy. Tutaj mała pułapka w zapisie - nie wstawiamy słowa "function", tak jak przy funkcjach "na zewnątrz" 👇:

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, więc spokojnie 😅).

CHCĘ ZACHOWAĆ PRYWATNOŚĆ

Wreszcie coś, co daje przewagę klasom nad obiekty ✊. Składowe mogą być też prywatne. Wiesz jak to się robi? Nie, nie wstawiamy żadnych modyfikatorów dostępu, jak możesz myśleć!

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

Znak krzyżyka (ang. hash) przed nazwą, czyni składową prywatną (niedostępną na zewnątrz) 🔒. Dotyczy to zarówno pól, jak i metod. Da to taki efekt, że nie będzie można się odwołać do składowej prywatnej na zewnątrz kodu.

Ukrywanie implementacji jest istotną rzeczą w programowaniu obiektowym. Jednym zdaniem - dobrze napisany kod dostępny dla innych osób to taki, który nie ujawnia szczegółów implementacji (żadna z nazw publicznych metod nie mówi niczego na temat użytych typów danych).

TWORZENIE INSTANCJI

Ostatnia rzecz - tworzenie obiektu na podstawie klasy 🔥. Robimy to tak samo, jak w pozostałych językach. Używamy słowa "new" 👇:

const myClassInstance = new MyClass();

Od tej pory, możemy tak samo odwoływać się do wszystkich składowych, o ile nie są prywatne ⚠️!

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żesz znać z innych języków: "class"!


Artykuł nieduży lecz wartościowy ⭐. Garść informacji i przykładów 📖. To Ci powinno wystarczyć, żeby wiedzieć jak z tego skorzystać i się nie przestraszyć 😄!

PODOBNE ARTYKUŁY