JS: Deep Copy Object, Array 🚀
Deep Copy
Here is the best way to clone (deep copy) a object. Object can be type Array or Object.
/* xah_deep_copy_array_or_object(obj) deep copy/clone a object. This is the best way. fastest too. http://xahlee.info/js/js_clone_object.html Version 2017-01-30. */ const xah_deep_copy_array_or_object = ((obj) => JSON.parse(JSON.stringify(obj)));
〔see JSON〕
Shallow Copy
For shallow copy, use the slice
method with no argument.
This is same as clone if your array does not contain elements that are references (that is, other array or objects.).
const oldArray = [3,4,5]; // shallow copy const newArray = oldArray.slice();
〔see Array.prototype.slice〕
Difference Between Deep Copy and Shallow Copy
Shallow copy copies by reference of nested elements. This means, if you have shallow copy, changing a nested object may also change your copy.
// shallow copy isn't true clone const mm = [8]; const aa = [3,mm]; // shallow copy const bb = aa.slice(); mm[0] = 4; // both are changed console.log(aa); // [ 3, [ 4 ] ] console.log(bb); // [ 3, [ 4 ] ]
JavaScript, Object and Inheritance
- JS: Object Tutorial
- JS: Object Overview
- JS: Object Type
- JS: Test is Object Type 🚀
- JS: Determine Type of Object
- JS: Prototype and Inheritance
- JS: Prototype Chain
- JS: Object.prototype.isPrototypeOf
- JS: Get Set Prototype
- JS: Show Prototype Chain 🚀
- JS: Create Object
- JS: Object Literal Expression
- JS: Create Object with Parent X
- JS: Prevent Adding Property
- JS: Deep Copy Object, Array 🚀
- JS: Test Object Equality 🚀
- JS: Add Method to Prototype
- JS: Object Object
- JS: Object Constructor
- JS: Object.prototype