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