Как вы перестаете назначать объекты JavaScript по ссылке? - PullRequest
1 голос
/ 21 июля 2010

Я использую библиотеку date.js.

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

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;

Примечание. Все предупреждения предназначены только для отладки.

1 Ответ

0 голосов
/ 21 июля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...