本篇文章翻譯自 How to clone an array in JavaScript - by Yazeed Bzadough on freeCodeCamp @medium,搭配 JS 的拷貝 by Kai @github 提及的概念,整理成筆記。
TL; TR
8.
JSON.parse and JSON.stringify 是深拷貝。其他都是淺拷貝。- 「call by reference」與「call by value」?
- 基本型別 (Primitive Type) - number, string, boolean, null, undefined - 傳值
- 物件 (Objects) - array, function, object - 傳址
- array/object 當中若含有複合型別時,此複合型別是 call by reference 而不是 by value。
- 「淺拷貝」與「深拷貝」的定義與差異?
- 淺拷貝在複製
object
時,會參考到同一個物件,並沒有將此物件拷貝到並建立出新的關聯。 - 深拷貝在複製
object
時,會獨立出來不共用同一個記憶體位置,改動newObject
時不會動到oldObject
。
- 淺拷貝在複製
- 這只是試看看能否用一個步驟就能深拷貝陣列的方式而寫的文章,網路上能找到其他更有趣的實作唷!