2010-07-21 3 views
1

Я использую библиотеку date.js.Как остановить javascript, назначая объекты по ссылке?

Предыдущий код:

alert(incidentDate); 
var deadlineDate = incidentDate; 
deadlineDate.add(2).years(); 
alert(incidentDate); 
return; 

Добавление к deadlineDate вызвало incidentDate менять тоже. Немного чтения показало, что это связано с тем, что объекты в javascript всегда назначаются по ссылке. Я нашел обходное решение (ниже), но оно цветит грязно. Должен быть какой-то более аккуратный способ сделать это, верно?

И кроме того, обходной путь, который я использовал, относится только к объектам Date. Как я буду разбираться с другим типом объекта?

Текущий код:

var deadlineDate; 
deadlineDate = incidentDate.toString('yyyy-MM-dd'); 
alert(incidentDate); 
alert(deadlineDate); 
deadlineDate = Date.parse(deadlineDate); 
alert(incidentDate); 
alert(deadlineDate); 
deadlineDate.add(2).years(); 
alert(incidentDate); 
alert(deadlineDate); 
return; 

Примечание: Все сигналы только для отладки.

+0

Это не так беспорядочно, как только вы снимаете предупреждения. И общий ответ - клонирование, но он работает только для простых объектов, а не с конкретными типами объектов. – Anurag

+0

Возможный дубликат [JavaScript: как передать объект по значению?] (Http://stackoverflow.com/questions/7574054/javascript-how-to-pass-object-by-value) –

ответ

0

Как сказал Анураг, единственным общим решением является cloning. Тем не менее, есть лучший способ написать обходное решение. Используйте значение миллисекунды, чтобы создать новую дату, а не форматировать строку, а затем ее проанализировать.

Смежные вопросы