Массив как ссылочный тип
Доброго времени суток!
Столкнулся с один интересным моментом, при отладке скрипта. В общем-то я причину понял, но хотелось бы познакомиться с ней по-лучше т.к. в голове это пока не укладывается. Весь код приводить не стану, а только,так сказать самое вкусное. Прошу прощения, если где-то что-то напутал/забыл. //Определяем в прототипе метод: var list = this.renderOrder; //Синоним, для сокращенного обращения /*некоторое кол-во кода*/ var head = list.splice(0,itemIndex) head.push(userID); list = head.concat(list); //В этом месте, list перестает указывать на this.renderOrder Проблема всплыла из-за моего незнания спецификации и невнимательного чтения книг) Но все равно интересно, почему в последней строчке меняется не массив this.renderOrder, а начинает указывать на новый созданный массив? Если можно - будет даже здорово увидеть в спецификации этот момент. Заранее спасибо. |
Gerald,
строка 2 -- в list хранилась ссылка на обьект renderOrder строка 6 -- в list записали ссылку на другой обьект |
рони,
Это ясно. Вопрос другой - почему именно записывается ссылка? Со 2й строкой ясно - там объявление. А потом - почему нельзя по ссылке перезаписать объект? Вот мне допустим требуется целиком изменить массив. |
Часовой пояс GMT +3, время: 17:49. |