Ссылки указывают на объекты, а не на переменные. box
не является ссылкой на переменную this.collec.box
; скорее, box
и this.collec.box
являются ссылками на один конкретный объект в памяти. Вы можете изменить свойства этого объекта с помощью любой из этих переменных, но вы не можете использовать одну переменную для изменения другой переменной.
Если вы хотите изменить то, к чему относится this.collec.box
, вам нужно либо установить его прямо так:
this.collec.box = ...;
или используйте ссылку на объект this.collec
и измените его свойство box
:
var x = this.collec;
x.box = ...;
Редактировать: Возможно, пара диаграмм облегчит понимание того, что происходит.
Когда вы назначаете box = this.collec.box
, это именно то, что происходит на самом деле:
this.collec.box -----> (object) <----- box
Обе переменные указывают на один и тот же объект в памяти, но никоим образом box
не ссылается на переменную this.collec.box
.
То, что вы ожидаете, сработает, если это произойдет:
box -----> this.collec.box -----> (object)
но этого не происходит.