Přístup k vlastnostem objektu
Existují dva způsoby přístupu k vlastnostem objektu:
- Dot Notation
- Bracket Notation
Nejčastěji se používá dot notace. Níže se ponoříme do každé z nich a zjistíme některé rozdíly.
Tečková notace
Nejprve se podíváme na tečkovou notaci. Vezměme si tento příklad níže:
let obj = {
cat: 'meow',
dog: 'woof'
};let sound = obj.cat;console.log(sound);
// meow
Rád bych upozornil na pátý řádek, kde používáme tečkovou notaci: let sound = obj.cat;
. Jedná se o příklad tečkové notace. K vlastnostem objektu můžete přistupovat tak, že zadáte název objektu, za kterým následuje tečka (tečka) a za ní název vlastnosti. Toto je syntaxe: objectName.propertyName;
.
Při práci s tečkovou notací mohou být identifikátory vlastností pouze alfanumerické (a
_
a$
). Vlastnosti nemohou začínat číslem.
Tečkový zápis je mnohem čitelnější než zápis v závorkách, a proto se používá častěji. Existuje však ještě druhý způsob přístupu k vlastnostem objektu, o kterém byste měli vědět. Říká se mu zápis v závorkách.
Zápis v závorkách
Tady je příklad zápisu v závorkách:
let obj = {
cat: 'meow',
dog: 'woof'
};let sound = obj;console.log(sound);
// meow
Znovu upozorňujeme na pátý řádek: let sound = obj;
. K vlastnostem objektu můžete přistupovat tak, že uvedete název objektu následovaný názvem vlastnosti v závorce. Zde je syntaxe: objectName
.
S zápisem v závorkách jste se pravděpodobně setkali při práci s poli. V následujícím příkladu budeme přistupovat k druhému prvku v našem arr
pomocí syntaxe: arrayName
let arr = ;let letter = arr;console.log(letter);
// b
Zápis v závorkách je však užitečný i při práci s objekty.
Při práci se zápisem v závorkách musí být identifikátory vlastností pouze řetězec. Mohou obsahovat libovolné znaky včetně mezer. Lze použít i proměnné, pokud se proměnná převádí na řetězec String.
Při práci se zápisem v závorkách tedy existuje méně omezení. V řetězcích nyní můžeme mít mezery a dokonce můžeme řetězce začínat čísly.
Snad nejdůležitější je, že nyní můžeme proměnné používat k přístupu k vlastnostem objektu. Je důležité, aby proměnná, kterou používáte, odkazovala na řetězec.
Podívejte se na tento příklad proměnné. Možná bude zpočátku trochu matoucí, proto mějte strpení:
let obj = {
cat: 'meow',
dog: 'woof'
};let dog = 'cat';
let sound = obj;console.log(sound);
// meow
Výše uvedený příklad je podobný předchozímu příkladu, který jsme již viděli. Hlavní rozdíl je v tom, že nyní používáme k předání proměnné zápis v závorkách. Pozor, může to vypadat, že v našem obj
hledáme vlastnost dog
, ale není to celé správně. dog
je proměnná s hodnotou 'cat'
. Protože používáme závorky, předáváme hodnotu řetězce a hledáme vlastnost 'cat'
– obj
. Do konzoly se tedy zapíše meow
.
Níže zkusíme provést totéž, ale s tečkovým zápisem:
let obj = {
cat: 'meow',
dog: 'woof'
};let dog = 'cat';
let sound = obj.dog;console.log(sound);
// woof
Hned na začátku byste si měli všimnout, že se nám vrátí woof
. To je velmi odlišné od druhého příkladu a je to proto, že nemůžeme používat proměnné s tečkovým zápisem. Pokus o vyhledání obj.dog
ve skutečnosti pouze vyhledá řetězcovou hodnotu 'dog'
v rámci našeho objektu, místo aby použil hodnotu proměnné. Tedy obj.dog
vrátí woof
.
Recap
Existuje několik důležitých rozdílů mezi tečkovým a závorkovým zápisem:
Tečkový zápis:
- Identifikátory vlastností mohou být pouze alfanumerické (a
_
a$
) - Identifikátory vlastností nemohou začínat číslem.
- Identifikátory vlastností nemohou obsahovat proměnné.
- OK –
obj.prop_1
,obj.prop$
- Není OK –
obj.1prop
,obj.prop name
Zápis v raketě:
- Identifikátory vlastností musí být řetězec nebo proměnná, která odkazuje na řetězec.
- Je v pořádku používat proměnné, mezery a řetězce začínající čísly
- OK –
obj
,obj
Díky za přečtení! Pokud jste připraveni se konečně naučit vyvíjet webové stránky, podívejte se na knihu The Ultimate Guide to Learning Full Stack Web Development in 6 months za 30 dolarů. Pokud chcete jen zlepšit své dovednosti v JavaScriptu, podívejte se na:
Každý týden publikuji 4 články o vývoji webových aplikací. Pokud chcete být jednou týdně zařazeni do mého e-mailového seznamu, zvažte prosím zadání svého e-mailu zde nebo mě sledujte na Twitteru
.