Вопрос по javascript – Как клонировать объект Date в JavaScript

403

Присвоение переменной Date другой копирует ссылку на то же самое значение. Это означает, что изменение одного изменит другого. Как я могу на самом деле клонировать или скопировать значение?

Ваш Ответ

6   ответов
18
var orig = new Date();
var copy = new Date(+orig);
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded+Error: User Rate Limit Exceeded
:) +<,/code> sign is unaray operator here. It means new Date( Number(orig)) . More here: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
1

вы можете сделать его не перечисляемым ...

Date.prototype = Object.defineProperty(Date.prototype, "clone", { 
        value: function (fromDate) { return new Date(fromDate.valueOf()); } 
    });
598

Дата Объект & APOS; sgetTime() метод, который возвращает количество миллисекунд с 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 работает).

Error: User Rate Limit ExceededcopiedDate = new Date(date)Error: User Rate Limit Exceeded
Error: User Rate Limit Exceedednew Date(date)Error: User Rate Limit Exceedednew Date(date.getTime()Error: User Rate Limit Exceedednew Date(date.valueOf)Error: User Rate Limit ExceededtoISOString()Error: User Rate Limit Exceeded"2015-04-21T04:56:42.000Z"Error: User Rate Limit Exceeded"2015-04-21T04:56:42.337Z".
Error: User Rate Limit Exceeded
Error: User Rate Limit ExceededDate.prototype.clone = function() { return new Date(this.getTime()); };Error: User Rate Limit ExceededcopiedDate = date.clone();
new Date(date)Error: User Rate Limit Exceedednew Date(date.getTime())Error: User Rate Limit Exceededdate.valueOf()Error: User Rate Limit Exceededdate.valueOf()Error: User Rate Limit Exceededdate.getTime()Error: User Rate Limit ExceededDate.valueOf Object.valueOf
94

var dat = new Date() 

var copyOf = new Date(dat.valueOf())
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
7

dateOriginal = new Date();
cloneDate = new Date(dateOriginal);

Но я не знаю, как "безопасно" это. Успешно протестировано в IE7 и Chrome 19.

Error: User Rate Limit Exceedednew Date(date)Error: User Rate Limit Exceedednew Date(date.getTime()Error: User Rate Limit Exceedednew Date(date.valueOf)Error: User Rate Limit ExceededtoISOString()Error: User Rate Limit Exceeded"2015-04-21T04:56:42.000Z"Error: User Rate Limit Exceeded"2015-04-21T04:56:42.337Z".
14

Date.prototype.clone = function () {
    return new Date(this.getTime());
}
Error: User Rate Limit Exceededfunctional programmingError: User Rate Limit Exceededconst cloneDate = d => new Date(d.getTime()).
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededactuts.wordpress.com/2017/01/10/…
Error: User Rate Limit Exceeded

Похожие вопросы