在 JavaScript 領域中,我們過去經常需要做各種關於克隆的事情。

為什麼呢?

因為…引用。

基本類型(字串、數字、布林值…)總是可以正確地 “克隆”,因為它們是按值傳遞的。

其他所有物件(物件、陣列、日期等等)都是物件。而物件是按引用傳遞的。

所以,我們必須使用不同的方式進行深度克隆,否則你會得到同一個物件的引用,只是名稱不同。

但現在已經是 2023 年,我們可以使用 structuredClone()

const b = structuredClone(a)

這將深度克隆非基本類型。

只需注意它是一個新的 API,所以如果你在瀏覽器中使用它,請確保使用提供 core-js(babel)polyfill 的建構工具。