JavaScript で Date をディープコピーする

Date オブジェクトをコピーしたかったときのメモ.

どうやら標準ではオブジェクトのディープコピー用のメソッドは用意されていない模様.JavaScript でディープコピーする方法として JSON.stringify を使うものや jQuery.extend を使うものが紹介されているのを見かけましたが,これらは配列や文字列等を対象としていて,Date オブジェクトでは上手くできませんでした.

Date をコピーするために,以下のように元のオブジェクトのデータをコンストラクタに与えて新たにオブジェクトを生成するのが一番安心で簡単そうです.

let original = new Date();
let copy = new Date(original.getTime());

Date は割と簡単にコピーできましたが,生成が複雑なオブジェクトの場合には自前でコピーメソッドを用意する必要がありそうです.