Почему меняется значение переменной
есть переменная 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, время: 14:58. |