vadnica-logo
Editor Moj Blog Moje storitve O projektu Telegram O meni O meni

JavaScript Objekti

JavaScript uporablja preprost objektni model. Objekt je zbirka lastnosti, pri čemer je lastnost par ime–vrednost. Vrednost lastnosti je lahko tudi funkcija; v tem primeru lastnosti rečemo metoda. Objekte lahko primerjamo s predmeti iz vsakdanjega življenja (npr. skodelica ima barvo, težo, material …). Tudi objekti v JavaScriptu imajo lastnosti, ki določajo njihove značilnosti. Poleg vnaprej določenih (vgrajenih) objektov v brskalniku lahko ustvarimo tudi svoje – kako, si ogledamo v tej vadnici. Objekt lahko ustvarimo z objektnim literalom (inicializatorjem) ali s funkcijo konstruktorja in operaterjem new. Objektni literali so najpogostejši in najpreglednejši način.

PRIMER
REZULTAT

Ustvarjanje in dostop do lastnosti

Objekti v JavaScriptu so zbirke lastnosti (parov ime-vrednost). Najpogostejši način za ustvarjanje je uporaba objektnega literala ({}). Do lastnosti se dostopa s točko (obj.lastnost) ali oklepaji (obj["lastnost"]), kar omogoča tudi dinamično imenovanje.

Metode za delo z objekti

Objekt Object ponuja številne statične metode za manipulacijo: keys(), values() in entries() za pregled lastnosti, assign() za kopiranje, freeze() in seal() za zaščito ter is() za primerjavo vrednosti.

Popoln pregled metod in lastnosti objektov (Cheat Sheet)

Spodnja tabela prikazuje vse glavne načine ustvarjanja, dostopa, spreminjanja in zaščite objektov, vključno z metodami objekta Object in pretvorbami v JSON. Za vsak element so navedeni opis, sintaksa in konkreten primer kode.

Ime Opis Sintaksa Primer
Objektni literal Najpogostejši način za ustvarjanje objekta. const obj = { last: "vrednost" }; const oseba = { ime: "Ana", starost: 25 };
Konstruktor (new) Ustvari objekt s pomočjo konstruktorja. const obj = new Object(); const obj = new Object(); obj.ime = "Ana";
Custom konstruktor Ustvari objekt s pomočjo lastne funkcije konstruktorja. function Ime() { ... } const obj = new Ime(); function Oseba(n) { this.ime = n; } const p = new Oseba("Ana");
Object.create() Ustvari nov objekt z določenim prototipom. Object.create(prototip); const nov = Object.create(oseba);
[.] (Točka) Dostop do lastnosti z imenom (če je ime veljavni identifier). obj.lastnost console.log(oseba.ime);
[] (Oklepaji) Dostop do lastnosti z nizom (uporabno za dinamična imena ali imena s presledki). obj["lastnost"] console.log(oseba["ime"]);
Dinamično ime Dinamično določanje imena lastnosti pri ustvarjanju. { [izraz]: "vrednost" } const kljuc = "ime"; const obj = { [kljuc]: "Ana" };
Dodajanje Dodajanje nove lastnosti obstoječemu objektu. obj.lastnost = vrednost; oseba.priimek = "Novak";
Brisanje Odstranitev lastnosti iz objekta. delete obj.lastnost; delete oseba.starost;
Preverjanje obstoja Preveri, ali objekt ima določeno lastnost. "lastnost" in obj ali obj.hasOwnProperty("lastnost") console.log("ime" in oseba); // true
Object.keys() Vrne tabelo vseh lastnih imen lastnosti (ključev). Object.keys(obj) Object.keys(oseba); // ["ime", "starost"]
Object.values() Vrne tabelo vseh lastnih vrednosti lastnosti. Object.values(obj) Object.values(oseba); // ["Ana", 25]
Object.entries() Vrne tabelo parov [ključ, vrednost]. Object.entries(obj) Object.entries(oseba); // [["ime", "Ana"], ["starost", 25]]
Object.assign() Kopira lastnosti iz enega ali več virov v ciljni objekt. Object.assign(cilj, vir1, vir2) Object.assign(oseba, { mesto: "LJ" });
Object.freeze() Uzamka objekt (ne morejo se dodajati, brisati ali spreminjati lastnosti). Object.freeze(obj) Object.freeze(oseba); oseba.ime = "Borut"; // ne bo delovalo
Object.seal() Zapečati objekt (ne morejo se dodajati ali brisati lastnosti, a se lahko spreminjajo). Object.seal(obj) Object.seal(oseba);
Object.is() Preveri, ali sta dva objekta enaka (bolj strogo kot `==`). Object.is(val1, val2) Object.is(0, -0); // false
Object.hasOwn() Preveri, ali objekt ima določeno lastnost (novejša metoda). Object.hasOwn(obj, "lastnost") Object.hasOwn(oseba, "ime"); // true
__proto__ Dostop do prototipa objekta (manj priporočljivo, uporabite `Object.getPrototypeOf`). obj.__proto__ console.log(oseba.__proto__);
prototype Lastnost konstruktorja, ki določa prototip za vse objekte, ustvarjene s tem konstruktorjem. Konstruktor.prototype Oseba.prototype.pozdrav = function() { ... };
Object.getPrototypeOf() Vrne prototip objekta. Object.getPrototypeOf(obj) Object.getPrototypeOf(oseba);
Object.setPrototypeOf() Nastavi prototip objekta. Object.setPrototypeOf(obj, prototip) Object.setPrototypeOf(oseba, novPrototip);
JSON.stringify() Pretvori objekt v JSON niz. JSON.stringify(obj) JSON.stringify(oseba); // "{"ime":"Ana","starost":25}"
JSON.parse() Pretvori JSON niz v objekt. JSON.parse(niz) JSON.parse('{"ime":"Ana"}'); // {ime: "Ana"}
toString() Vrne niz, ki predstavlja objekt (privzeto "[object Object]"). obj.toString() oseba.toString(); // "[object Object]"