Как клонировать объект Date?
Присвоение переменной Date
другой копирует ссылку на тот же экземпляр. Это означает, что изменение одного изменит другой.
Как я могу на самом деле клонировать или скопировать экземпляр Date
?
Ответы
Ответ 1
Используйте Date объект getTime()
метод, который возвращает число миллисекунд с 1 января 1970 года 00:00:00 (время в эпоху):
var date = new Date();
var copiedDate = new Date(date.getTime());
В Safari 4 вы также можете написать:
var date = new Date();
var copiedDate = new Date(date);
... но я не уверен, работает ли это в других браузерах. (Кажется, это работает в IE8).
Ответ 2
Это самый чистый подход
var dat = new Date()
var copyOf = new Date(dat.valueOf())
Ответ 3
var orig = new Date();
var copy = new Date(+orig);
Ответ 4
Упрощенная версия:
Date.prototype.clone = function () {
return new Date(this.getTime());
}
Ответ 5
Я узнал, что это простое назначение также работает:
dateOriginal = new Date();
cloneDate = new Date(dateOriginal);
Но я не знаю, как это "безопасно". Успешно протестирован в IE7 и Chrome 19.
Ответ 6
Если вы собираетесь добавить клон к прототипу Date, то вы можете сделать его неперечислимым...
Date.prototype = Object.defineProperty(Date.prototype, "clone", {
value: function (fromDate) { return new Date(fromDate.valueOf()); }
});
Ответ 7
вы можете использовать универсальный метод:
-
Дата
var new_date = $.extend(new Date(), current_date);
-
Объект
var new_object = $.extend({}, current_object);
и другие...