If you're seeing this message, it means we're having trouble loading external resources on our website.

Jeżeli jesteś za filtrem sieci web, prosimy, upewnij się, że domeny *.kastatic.org i *.kasandbox.org są odblokowane.

Główna zawartość

Przegląd: Obiekty

Ten tekst jest podsumowaniem ogólnym materiału o obiektach w tym poradniku.
Jest wiele wartości które można przechowywać w JavaScriptowych zmiennych; czasami chcemy przechować parę podobnych wartości razem: wtedy potrzebujemy coś takiego jak obiekty !
Obiekt to typ danych który pozwala nam na przechowanie zbioru wartości jako jedną zmienną. By stworzyć obiekt, deklarujemy zwykłą zmienną jak gdyby nigdy nic, po czym używamy nawiasów klamrowych by otoczyć pary kluczy i własności wartości:
var nazwaObiektu = {
    nazwaWlasnosci: wartoscWlasnosci,
    nazwaWlasnosci: wartoscWlasnosci,
...
}
Poniżej znajduje się obiekt który opisuje Winstona - ten obiekt ma dwie wartości miastoUrodzenia oraz owlosienie, każda z tych wartości to string (ciąg znaków alfanumerycznych):
var opisWinstona = {
    miastoUrodzenia: "Radom, Kieleckie",
    owlosienie: "brak"
};
Poniżej jest bardziej skomplikowany obiekt któy opisuje kotka z czterema własnościami: wiek, kolorFutra, lubi, oraz urodziny.
var lucekKotek = {
    wiek: 18,
    kolorFutra: "szary":,
    lubi: ["kocimietka", "mleko"],
    urodziny: {"miesiac": 7, "dzien":17, "rok": 1994}};
};
Zauważ, że każda własność przechowuje inny typ danych: wiek przechowuje numer, kolorFutra przechowuje ciąg znaków, lubi to tablica, a urodziny przechowuje kolejny inny obiekt. Dlatego obiekty są takie fajne—między innym dlatego, że mogą przechowywać inne obiekty w środku! Możesz mieć obiekty w obiektach, a w tych obiektach kolejne obiekty, zagnieżdżając je w sobie by opisać najbardziej skomplikowane dane jakie ci przyjdą do głowy.
Czasami spotyka się obiekty deklarowane z użyciem cudzysłowów dookoła własności, dla przykładu:
var opisWinstona = {
    "miasto Urodzenia": "Radom, Kieleckie",
    "owlosienie": "brak"
};
Jest to równoznaczne z tym co widzieliśmy wcześniej bez cudzysłowów, ale dłużej się to pisze. Jedyny przypadek, gdy naprawdę potrzebujesz cudzysłowów: gdy przypadkiem użyjesz spacji (lub innego znaku białego) w nazwie własności, dla przykładu:
var opisWinstona = {
    "jego wlosy": "brak"
};
Musimy tu użyć cudzysłowów, gdyż interpreter JavaScriptu nie wiedziałby co zrobić. Moja porada: nie używaj spacji ani innych znaków białych (znaków, które wyglądają jak pustka) by nazywać wartości! Wtedy nie będziesz musiał używać cudzysłowów dookoła nazw własności.

Dostęp do własności obiektu

Obiekt jest bezużyteczny jeśli nie możemy do niego zaglądać i używać wartości zawartych w nim. Są na to dwa sposoby: pierwszy, w którym używamy "kropek", gdzie piszemy nazwę zmiennej, po niej ".", a następnie nazwę własności:
var opisWinstona = {
miastoUrodzenia: "Radom, Kieleckie",
owlosienie: "brak"
};

text("Winston pochodzi z  " + opisWinstona.miastoUrodzenia, 100, 100);
text("Winston ma " + opisWinstona.owlosienie + " wlosow na glowie", 100, 150);
Możemy też użyć czegoś jak "notacja nawiasowa", która dobiera się do wartości elementów tablic, gdzie wpisujemy nazwę zmiennej, następnie kwadratowe nawiasu, z nazwą własności w cudzysłowach:
var jegoMiasto = opisWinstona["miasto Urodzenia"];
var jegoWlosy =opisWinstona["owlosienie"];
Jeśli spróbujemy dobrać się do własności która nie istnieje, dostaniemy informację, że nie istnieje, jako "undefined"(co znaczy: niezdefiniowane):
text("Celem w życiu Winstona jest " + opisWinstona.celZycia, 100, 150);

Modyfikacja własności obiektu

Tak jak gdy przechowujemy inne typy danych w zmiennych, możemy zmienić wartości własności obiektu w każdym momencie wykonywania programu, używając kropek lub notacji nawiasowej:
opisWinstona.owlosienie= "krecone";//Winston przeszczepił sobie włosy!
Możemy równie dobrze dodawać nowe własności!
opisWinstona.celZycia = "nauczyć się Javascriptu";
Jeśli skończyliśmy używać określoną własność, możemy ją usunąć (ale raczej będziemy zmieniać jej wartość):
delete opisWinstona.owlosienie;

Tablica obiektów

Teraz gdy wiesz jak wyglądają tablice i obiekty: możesz zrobić tablicę obiektów-jest to szalenie przydatne w przechowywaniu danych w programach. Dla przykładu, tablica kotów:
var mojeKoty = [
{imie: "Lucek",
wiek: 18},
{imie: "Demon",
wiek: 1}
];

for (var i = 0; i < mojeKoty.length; i++) {
var mojeKoty = mojeKoty[i];
println(mojeKoty.imie + ' ma ' + mojeKoty.wiek + ' lat. ');
}
Należy tu nadmienić, że przelatujemy przez tablicę obiektów w ten sam sposób w jaki przelatujemy przez tablicę numerów albo ciągów znaków, używając pętli for. W każdym przelocie, dobieramy się do obecnej tablicy elementów za pomocą notacji nawiasowej, a wtedy dobieramy się do własności elementu tej tablicy (lub obiektu) za pomocą kropek.
Poniżej jest inny przykład który mógłby zostać użyty w programach, tablica wpółrzędnych:
var positions = [
    {x: 200, y: 100},
    {x: 200, y: 200},
    {x: 200, y: 300}
];

for (var i = 0; i < positions.length; i++) {
    var position = positions[i];
    ellipse(position.x, position.y, 100, 100);
}
Nieźle, nie? Obiekty mogą stwarzać na początku problemy, mogą być niezrozumiałe, ale wraz z używaniem ich, cały twój świat stanie się obiektowy!

Chcesz dołączyć do dyskusji?

Rozumiesz angielski? Kliknij tutaj, aby zobaczyć więcej dyskusji na angielskiej wersji strony Khan Academy.