JavaScriptда объект хусусиятига мурожаат хатоси
Объект хусусиятига мурожаат килганда ушбу хусусиятнинг номи ўзгарувчида сақланмайди. Нега бунинг шундай эканини кўрамиз. Бизда ушбу объект бор деб фараз килайлик:
let obj = {a: 1, b: 2, c: 3};
Фарз килайлик, ўзгарувчида биз олмоқчи бўлган хусусиятнинг номи сақланган:
let key = 'a';
Келик, ушбу ўзгарувчидан фойдаланиб, объект хусусиятига мурожаат киб кўрамиз:
console.log(obj.key); // undefined
Келтирилган код ишламейди, чунки
аслида биз 'key' номли хусусиятни излаяпмиз,
ёмки key ўзгарувчида сақланган номли
хусусиятни эмас. Яъни аслида
бизнинг кодимиз куйидагига эквивалент:
console.log(obj['key']);
Ўзгарувчидан олинган калит орқали элементга мурожаат килишнинг ягона усули - ушбу ўзгарувчини қавс ичида ёзишдир:
console.log(obj[key]);
Куйидаги кодда қилган хатони тузатинг:
let obj = {x: 1, y: 2, z: 3};
let prop = 'x';
console.log(obj.prop);
Куйидаги кодда қилган хатони тузатинг:
let obj = {x: 1, y: 2, z: 3};
let prop = 'x';
console.log(obj['prop']);