Почему меняется значение переменной
есть переменная lmp типа Date. В ней записана дата 1 сентября 2011. Делаю так
alert(lmp); //выводит 1 сентября 2011 incrementedDate = lmp; incrementedDate.setDate(incrementedDate.getDate() + (lenOfCycle - 17) ); alert(lmp); // выводит 5 сентября 2011, т.е. значение incrementedDate Почему значение lmp меняется???? Убейте, но не пойму!!! |
Потому что lmp и incrementedDate ссылаются на один и тот же объект. И он изменяется.
|
а я думал, что lmp просто копируется в incrementedDate..
В чем же тогда смысл переменных, если простое присваивание приводит к такому результату? И вообще, не знал, что в JS есть ссылки :) Удивлен :) |
В JS вообще везде ссылки... ужас :)
|
Цитата:
|
Цитата:
|
Цитата:
|
Я использую эту функцию, когда надо создать клон объекта.
function clone(obj) { if (obj == null || typeof(obj) != 'object') { return obj; } var temp = obj.constructor(); for (var key in obj) { temp[key] = clone(obj[key]); } return temp; }Тогда incrementedDate = clone(lmp); |
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 13:16. |