Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Массив как ссылочный тип (https://javascript.ru/forum/misc/43778-massiv-kak-ssylochnyjj-tip.html)

Gerald 20.12.2013 11:06

Массив как ссылочный тип
 
Доброго времени суток!
Столкнулся с один интересным моментом, при отладке скрипта. В общем-то я причину понял, но хотелось бы познакомиться с ней по-лучше т.к. в голове это пока не укладывается. Весь код приводить не стану, а только,так сказать самое вкусное. Прошу прощения, если где-то что-то напутал/забыл.
//Определяем в прототипе метод:
var list = this.renderOrder; //Синоним, для сокращенного обращения
/*некоторое кол-во кода*/
var head = list.splice(0,itemIndex)
head.push(userID);
list = head.concat(list); //В этом месте, list перестает указывать на this.renderOrder

Проблема всплыла из-за моего незнания спецификации и невнимательного чтения книг) Но все равно интересно, почему в последней строчке меняется не массив this.renderOrder, а начинает указывать на новый созданный массив? Если можно - будет даже здорово увидеть в спецификации этот момент. Заранее спасибо.

рони 20.12.2013 11:37

Gerald,
строка 2 -- в list хранилась ссылка на обьект renderOrder
строка 6 -- в list записали ссылку на другой обьект

Gerald 20.12.2013 12:07

рони,
Это ясно. Вопрос другой - почему именно записывается ссылка? Со 2й строкой ясно - там объявление. А потом - почему нельзя по ссылке перезаписать объект? Вот мне допустим требуется целиком изменить массив.


Часовой пояс GMT +3, время: 17:49.