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']);