JavaScriptでディープコピーを行う
JavaScriptでの代入はシャローコピーとして扱われる。
ディープコピーを行う場合は、組み込みのstructedClone
関数を利用する。
const original = {
str: "x",
object: {
str: "yy",
},
date: new Date(),
_: undefined,
};
const deepCopy1 = structuredClone(original);
structedCloneの制限事項
structedClone
関数はオブジェクトの関数をコピーすることができない。
コピーしようとするとDOMException
が発生してしまう。
Uncaught DOMException: Failed to execute 'structuredClone' on 'Window': () => {
return "func";
} could not be cloned.