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.
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.
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.
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]" |