Почему меняется значение переменной
есть переменная 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); |
Цитата:
|
Цитата:
|
А хз) Я JavaScript знаю еле-еле :D
Я знаю как с этим обстоит в Java. А тут - ХЗ Наверное, нет... |
Легко проверить.
// primitive type
var a = 5;
var b = a;
b = 100;
alert('a: ' + a + '; b: ' + b);
// object
var a = {};
var b = a;
b.test = 21;
alert('a.test: ' + a.test);
|
Спс)
|
Цитата:
var a = b = 5; b += 5; alert( 'a: ' + a + '; b: ' + b ); |
Цитата:
|
| Часовой пояс GMT +3, время: 23:38. |