Virhe olion ominaisuuteen viittaamisessa JavaScriptissä
Kun viittaat olion ominaisuuteen, tämän ominaisuuden nimeä ei voida tallentaa muuttujaan. Katsotaan miksi. Oletetaan, että meillä on tällainen olio:
let obj = {a: 1, b: 2, c: 3};
Oletetaan, että muuttujassa tallennettuna on ominaisuuden nimi, jonka arvon haluamme saada:
let key = 'a';
Yritetään viitata olion ominaisuuteen käyttämällä tätä muuttujaa:
console.log(obj.key); // undefined
Annettu koodi ei toimi, koska
käytännössä etsimme ominaisuutta nimellä
'key', emme ominaisuutta, jonka nimi on tallennettuna
muuttujaan key. Toisin sanoen käytännössä
meidän koodimme vastaa seuraavaa:
console.log(obj['key']);
Ainoa tapa viitata elementtiin avaimella muuttujasta on kirjoittaa tämä muuttuja hakasulkeisiin:
console.log(obj[key]);
Korjaa seuraavassa koodissa tehty virhe:
let obj = {x: 1, y: 2, z: 3};
let prop = 'x';
console.log(obj.prop);
Korjaa seuraavassa koodissa tehty virhe:
let obj = {x: 1, y: 2, z: 3};
let prop = 'x';
console.log(obj['prop']);