JAVASCRIPT Obiekty
Obiekt jest takim tworem, który ma swoje metody (funkcje) i właściwości (zmienne i ich wartości). Znasz już pewne obiekty i zdarzyło Ci się nie raz z nich korzystać. Obiektami są na przykład Math czy window. Obiekty służą do tego, żeby pewne elementy świata poukładać w zamknięte pudełka.
Stwórzmy obiekt kot. Kot niech posiada imię oraz szybkość (właściwości), a także niech potrafi zamiauczeć (metoda).
const kot = { imie: "Error", szybkosc: 8, miaucz : function() { console.log("Miau!"); } } console.log("Imię kota: ", kot.imie); // Imię kota: Error console.log("Szybkość kota: ", kot["szybkosc"]); // Szybkość kota: 8 kot.miaucz(); // Miau! kot["miaucz"](); // Miau!
Widzimy tu strukturę budowy obiektu. Jego ciało zamknięte jest w klamrach rozpoczynających się po podaniu typu i nazwy obiektu. Następnie wymieniliśmy jego właściwości, a po znaku dwukropka ich wartości. Na koniec metoda miaucz, która jest zdefiniowaną funkcją wypisującą w konsoli podany komunikat.
Kolejna część programu obrazuje dostęp do danych obiektu. Poprzez wykonanie polecenia kot.imie, otrzymujemy dostęp do właściwości imie metody kot i wypisujemy tę wartość w konsoli. Podobnie robimy z szybkością.
Aby na naszym kocie uruchomić metodę odwołujemy się do niej podobnie jak do właściwości, z tym, że pamiętamy, że nazwa metody (funkcji) kończy się dwoma nawiasami okrągłymi: kod.miaucz().
Kolejny przykład przedstawia możliwość dodania nowych metod i właściwości do obiektu już poza jego ciałem.
const kot = { imie: "Error", szybkosc: 8, miaucz : function() { console.log("Miau!"); } } kot.zwinnosc = 10; kot.jedz = function() { console.log('Gdzie jest moja karma?!'); } kot.miaucz(); // Miau! kot.jedz(); // Gdzie jest moja karma?!
Wystarczy odwołać się do nazwy obiektu, po kropce podać nazwę nowej właściwości bądź metody i zdefiniować jej wartość.
Wewnątrz metody danego obiektu możemy odwołać się do wartości jego właściwości. Możemy tego dokonać za pomocą podania jego nazwy, np. kot.szybkość, bądź użyć słówka kluczowego this (mówiącego nam, że chodzi nam o ten obiekt, w którym się znajdujemy), tj. this.szybkosc.
const kot = { imie: "Error", szybkosc: 8, miaucz : function() { console.log("Miau!"); }, danekota : function() { console.log("Imię: ", this.imie); console.log("Szybkość: ", this.szybkosc); } } kot.biegne = function() { console.log("Kocia prędkość wynosi " + this.szybkosc + " i stale rośnie."); } kot.danekota(); kot.biegne();
Aby usunąć daną właściwość, bądź metodę obiektu użyjemy słówka kluczowego delete. I tak na przykładzie najpierw kot miał imię, a po chwili i jego usunięciu, taka właściwość była już niezdefiniowana.
const kot = { imie: "Error", szybkosc: 8, miaucz : function() { console.log("Miau!"); } } console.log(kot.nazwisko); //undefined console.log(kot.imie); //Error delete kot.imie; console.log(kot.imie); //undefined