Shallow copy vs deep copy in JS

1 min read

What is copying?

  • A copy will look exactly like the original, but it’s not exactly like that. When you change the copy’s data, you would expect that the original would remain the same, only the copy would change.
  • In programming, we store values ​​in variables. Making a copy means you create a new variable with the same value. However, there is a very dangerous problem when copying that we must consider carefully: deep copy and shallow copy. A deep copy means that the entire value assigned to the variable will be copied and completely separated from the original. Meanwhile, shallow copy means that some values ​​will still be connected to the original.

There are 3 common ways to copy objects in javascript

1. Use Object.assign method in javascript

2. Copy javascript Spread syntax

3. Use JSON.parse() and JSON.stringify()

Of the three ways to copy objects above, two of them belong to shallow copy, which are Object.assign(), and Spread Operator. And deep copy is the third way – Using JSON.parse() and JSON.stringify().

Shallow copying and Deep copying 

  • Shallow copy: It simply copies the object’s value, but the nested values ​​still refer to the original object

Reference types in Javascript generally have 3 types: Array, function and object.

Let’s see an example of shallow copy object js using the spread operator

  • Deep copy: This guy is the opposite of shallow copy, it copies the object’s value but the reference values ​​in the original object do not change.

Example of deep clone usage using JSON.parse() and JSON.stringify()

  • Now we do the same as above, update d = 34, then what happens, see next

=> We see, when update d = 34, the original object has changed but the clone object has not because it is no longer the reference type of the original object.

Avatar photo

Clean Code: Nguyên tắc viết hàm trong lập trình…

Trong quá trình phát triển phần mềm, việc viết mã nguồn dễ đọc, dễ hiểu là yếu tố then chốt để đảm bảo code...
Avatar photo Dat Tran Thanh
3 min read

Clean Code: Nguyên tắc đặt tên (Naming)

Clean Code là việc viết mã nguồn rõ ràng, dễ hiểu, dễ bảo trì. Bài viết này sẽ giới thiệu nguyên tắc đầu tiên...
Avatar photo Dat Tran Thanh
4 min read

Leave a Reply

Your email address will not be published. Required fields are marked *