Object 23.11.20
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.
const object1 = Object();
const object2 = {};
const person = {
name: "Papp Zsombor",
birthYear: 2003,
}
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...
alert(person["name"]);
Azonban lekérdezhetjük, úgyis mintha egy osztály egy tulajdonsága lenne.
alert(2023 - person.birthYear);
Elemek felvétele
Az elemek felvételénél az egyik módszer, hogy a tömbhöz hasonlóan kezelve adjuk meg a hozzádni kívánt elemet.
person["dogs"] = ["Bodri", "Frakk"];
Azonban nem ez az egyedüli lehetőségünk, ugyanis az elem eléshez hasonlóan .-al elválaszva is meg tudjuk azdni az új
elemünket.
person.hobbies = ["Basketball", "Reading"];
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.
delete person.dogs;
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.
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.
for(const key in person){
console.log(person[key]);
}
Keresés az objektumban
Függvények
Rövid szintaxis
Számított tulajdonságok
Objektum védelme
Az objektumunkat többféleképpen is meg tudjuk védeni küldő beavatkozásoktól.
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.
const person = {
name: "Papp Zsombor"
}
Object.seal(person);
Freeze
Amennyiben lefagyasztunk egy objektumot, úgy többet semmilyen módon nem tudjuk szerkeszteni azt.
const person = {
name: "Papp Zsombor"
}
Object.freeze(person);
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.
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:
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:
function clog({name, birthYear}){
console.log(name);
console.log(birthYear);
}
clog(person);
\pagebreak