Skip to content
Az oldal tartalma

Object

Vigyázat!

ES-ben minden adatszerkezetet referencia szerint kezelünk. Vagyis a változónk tartalma az nem a tényleges adat, hanem egy mutató, ami megmondja, hogy hol van a megfelelő adatunk! Ezért vagyunk képesek konstansként felvenni és mégis módosítani.

Az object, a Maphez hasonlóan kulcs-érték páros alapján fog nekünk értékeket tárolni, azonban jóval rugalmasabban kezelhező, mint társa.

JavaScript
const object1 = Object();
const object2 = {};
JavaScript
const person = {
    name: "Papp Zsombor",
    birthYear: 2003,
    hello(){
        alert(`Hello, ${this.name}`);
    }
}

Elemek felvétele

Az elemek felvételénél a legegyszerűbb módszer, hogy a tömbhöz hasonlóan kezelve adjuk meg a hozzádni kívánt elemet.

Figyelem!

A kulcsot mindig stringként adjuk meg!

JavaScript
person["dogs"] = ["Bodri", "Frakk"];

Elemek elérése

Az elemeket két módon is elérhetjük. Lekérdezhetjük a kulcs alapján, mintha tömb lenne, azonban lekérdezhetjük, úgyis mintha egy osztály egy tulajdonsága lenne.

JavaScript
alert(person["name"]);
alert(2022-person.birthYear);

Elemek törlése az objektumból

Amennyiben megszabadulnánk egy kulcs-érték párostól, akkor már egy kicsit érdekesebb a helyzet, ugyanis egy speciális függvényt kell meghívni hozzá, amely a mögötte álló kiválasztást törli.

JavaScript
delete person.dogs;

Objektum védelme

Az objektumunkat többféleképpen is meg tudjuk védeni küldő beavatkozásoktól.

Vigyázat!

Bármelyiket is alkalmazzuk, azzal végelesen lezárjuk az objektumunkat, így később nem lehet feloldani!

Seal

Amennyiben ezt alkalmazzük, az objektunkhoz nem lehet úgy tulajdonságot adni majd, valamit törölöni bármely tulajdonságát. De a meglévőket tudjuk még szerkeszteni.

JavaScript
const person = {
    name: "Papp Zsombor"
}
Object.seal(person);

Freeze

Amennyiben lefagyasztunk egy objektumot, úgy többet semmilyen módon nem tudjuk szerkeszteni azt.

JavaScript
const person = {
    name: "Papp Zsombor"
}
Object.freeze(person);

Az objektum végig iterálása

Az Object osztály statikus függvényei segítségével az előzőekhez haszonlóan végig tudunk menni az adott object kulcsain, értékein, vagy bejegyzésein.

JavaScript
for (const key of Object.keys(person)){
    console.log(key);
}

for(const value of Object.values(person)){
    console.log(value);
}

for(const entries of Object.entries(person)){
    console.table(entries);
}

Viszont az object esetén nem csak for..of-al, hanem for..in-el is végig tudunk menni, így a kulcsokon megyünk végig.

JavaScript
for(const key in person){
    console.log(person[key]);
}

Destrukció

Annak érdekében, hogy bizonyos adatokat az objektumból ki tudjuk emelni változóként, lehetőségünk van szétbontani azt.

JavaScript
const {name,birthYear} = person;

Ekkor a name és a birthYear onállő változóként jönnek létre és az objectben adott helyen lévő értékekkel töltődnek fel. Abban az esetben, ha a maradékot is szeretnénk elmenteni egy külön objectbe, akkor azt a ... (rest) operátorral tehetjük meg, akkor a fenti művelet így módosul:

JavaScript
const {name, birthYear, ...rest} = person;

Mikor lehet ez hasznos nekünk?

A leghasznosabb, amikor egy függvénynek sok paramétert kell átadni, úgy, hogy egy objectből kell őket kiválogatni, akkor a következő módon meg tudjuk oldani energiatakarékosan:

JavaScript
function clog({name, birthYear}){
    console.log(name);
    console.log(birthYear);
}

clog(person);
\pagebreak

A tananyag jelenlegi verziója: 4.0.0