Vlastnosti objektu JavaScript
Vlastnosti jsou nejdůležitější součástí jakéhokoli objektu JavaScriptu.
Vlastnosti JavaScriptu
Vlastnosti jsou hodnoty spojené s objektem JavaScript.
Objekt JavaScriptu je kolekce neuspořádaných vlastností.
Vlastnosti lze obvykle měnit, přidávat a mazat, ale některé jsou pouze pro čtení.
Přístup k vlastnostem JavaScriptu
Syntaxe pro přístup k vlastnosti objektu je:
objectName.property // person.age
nebo
objectName["property"] // person["age"]
nebo
objectName[expression] // x = "age"; person[x]
Výraz se musí vyhodnotit jako název vlastnosti.
Příklad 1
person.firstname + " is " + person.age + " years old.";
Příklad 2
person["firstname"] + " is " + person["age"] + " years old.";
JavaScript pro...ve smyčce
Příkaz JavaScript for...in
prochází vlastnostmi objektu.
Syntax
for (let variable in object) {
// code to be executed
}
Blok kódu uvnitř for...in
smyčky bude proveden jednou pro každou vlastnost.
Procházení vlastností objektu:
Příklad
const person = {
fname:" John",
lname:" Doe",
age: 25
};
for (let x in person) {
txt += person[x];
}
Přidání nových vlastností
K existujícímu objektu můžete přidat nové vlastnosti pouhým zadáním hodnoty.
Předpokládejme, že objekt person již existuje – pak mu můžete dát nové vlastnosti:
Příklad
person.nationality = "English";
Mazání vlastností
Klíčové delete
slovo odstraní vlastnost z objektu:
Příklad
const person = {
firstName: "John",
lastName: "Doe",
age: 50,
eyeColor: "blue"
};
delete person.age;
nebo odstranit osobu["věk"];
Příklad
const person = {
firstName: "John",
lastName: "Doe",
age: 50,
eyeColor: "blue"
};
delete person["age"];
Klíčové delete
slovo smaže jak hodnotu vlastnosti, tak vlastnost samotnou.
Po odstranění nelze vlastnost použít, dokud nebude znovu přidána.
Operátor
delete
je navržen pro použití na vlastnosti objektu. Nemá žádný vliv na proměnné ani funkce.
Operátor delete
by se neměl používat pro předdefinované vlastnosti objektu JavaScript. Může to způsobit pád vaší aplikace.
Vnořené objekty
Hodnoty v objektu mohou být jiným objektem:
Příklad
myObj = {
name:"John",
age:30,
cars: {
car1:"Ford",
car2:"BMW",
car3:"Fiat"
}
}
K vnořeným objektům můžete přistupovat pomocí tečkové nebo závorkové notace:
Příklad
myObj.cars.car2;
nebo:
Příklad
myObj.cars["car2"];
nebo:
Příklad
myObj["cars"]["car2"];
nebo:
Příklad
let p1 = "cars";
let p2 = "car2";
myObj[p1][p2];
Vnořená pole a objekty
Hodnoty v objektech mohou být pole a hodnoty v polích mohou být objekty:
Příklad
const myObj =
{
name: "John",
age: 30,
cars: [
{name:"Ford",
models:["Fiesta", "Focus", "Mustang"]},
{name:"BMW", models:["320", "X3", "X5"]},
{name:"Fiat", models:["500", "Panda"]}
]
}
Chcete-li získat přístup k polím uvnitř polí, použijte pro každé pole smyčku for-in:
Příklad
for (let i in myObj.cars) {
x += "<h1>" + myObj.cars[i].name
+ "</h1>";
for (let j in myObj.cars[i].models) {
x += myObj.cars[i].models[j];
}
}
Vlastnosti vlastnosti
Všechny vlastnosti mají svůj název. Kromě toho mají také hodnotu.
Hodnota je jedním z atributů vlastnosti.
Další atributy jsou: vyčíslitelný, konfigurovatelný a zapisovatelný.
Tyto atributy definují, jak lze k vlastnosti přistupovat (je čitelná?, lze do ní zapisovat?)
V JavaScriptu lze číst všechny atributy, ale změnit lze pouze atribut value (a to pouze v případě, že je vlastnost zapisovatelná).
(ECMAScript 5 má metody pro získání i nastavení všech atributů vlastností)
Vlastnosti prototypu
Objekty JavaScriptu dědí vlastnosti svého prototypu.
Klíčové delete
slovo neodstraní zděděné vlastnosti, ale pokud odstraníte vlastnost prototypu, ovlivní to všechny objekty zděděné z prototypu.