JavaScriptda obyektlarni reference (havola) orqali uzatish
Massivlar va obyektlar boshqa primitiv ma'lumotlar turlaridan bir oz farq qiladi. Farq shundaki, massivni saqlaydigan o'zgaruvchi, aslida uning o'zini o'zida saqlamaydi, balki faqatgina unga murojaat qiladi (reference).
Amaliyotda bu shuni anglatadiki, obyektni boshqa o'zgaruvchiga tayinlaganda, ikki o'zgaruvchi ham bir xil obyektga murojaat qiladi (reference). Keling, amalda sinab ko'raylik. Quyidagi obyektimiz bor deb faraz qilaylik:
javascriptlet obj1 = {a: 1, b: 2, c: 3};
Keling uni bir o'zgaruvchidan ikkinchisiga tayinlaymiz:
javascriptlet obj2 = obj1;
Keling o'zgaruvchilardan birini o'zgartiramiz:
javascriptobj2.a = '!';
Natijada, o'zgarishlar ikkinchi o'zgaruvchida ham ko'rinadi:
javascriptconsole.log(obj1); // {a: '!', b: 2, c: 3}
Kodni ishlamasdan, konsolga nima chiqishini aniqlang:
javascriptlet arr1 = [1, 2, 3];
let arr2 = arr1;
arr1[0] = 'a';
console.log(arr2);
Kodni ishlamasdan, konsolga nima chiqishini aniqlang:
javascriptlet arr1 = [1, 2, 3];
let arr2 = arr1;
arr1[0] = 'a';
arr2[1] = 'b';
console.log(arr1);
Kodni ishlamasdan, konsolga nima chiqishini aniqlang:
javascriptlet arr1 = [1, 2, 3];
let arr2 = arr1;
arr1[0] = 'a';
arr2[0] = 'b';
console.log(arr2);