Я использую библиотеку 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;
Примечание: Все сигналы только для отладки.
Это не так беспорядочно, как только вы снимаете предупреждения. И общий ответ - клонирование, но он работает только для простых объектов, а не с конкретными типами объектов. – Anurag
Возможный дубликат [JavaScript: как передать объект по значению?] (Http://stackoverflow.com/questions/7574054/javascript-how-to-pass-object-by-value) –