在 JavaScript 領域中,我們過去經常需要做各種關於克隆的事情。
為什麼呢?
因為…引用。
基本類型(字串、數字、布林值…)總是可以正確地 “克隆”,因為它們是按值傳遞的。
其他所有物件(物件、陣列、日期等等)都是物件。而物件是按引用傳遞的。
所以,我們必須使用不同的方式進行深度克隆,否則你會得到同一個物件的引用,只是名稱不同。
但現在已經是 2023 年,我們可以使用 structuredClone()。
const b = structuredClone(a)
這將深度克隆非基本類型。
只需注意它是一個新的 API,所以如果你在瀏覽器中使用它,請確保使用提供 core-js(babel)polyfill 的建構工具。