Computer >> Máy Tính >  >> Lập trình >> Javascript

Bạn sẽ sao chép sâu một Đối tượng trong Javascript như thế nào?

Bản sao sâu của một đối tượng sẽ sao chép mọi đối tượng mà nó gặp trong đối tượng mà chúng ta muốn sao chép. Bản sao và đối tượng gốc sẽ không chia sẻ bất cứ điều gì, vì vậy nó sẽ là bản sao của bản gốc.

Cách dễ nhất là chuyển đổi đối tượng thành chuỗi JSON và chuyển đổi lại thành đối tượng JS. Tuy nhiên, cách này không cho phép sao chép phương thức.

Ví dụ

let obj = {
   foo: 1,
   bar: { baz: 'test' }
}
let newObj = JSON.parse(JSON.stringify(obj));
obj.bar.baz = 20;
console.log(obj);
console.log(newObj);

Đầu ra

{ foo: 1, bar: { baz: 20 } }  
{ foo: 1, bar: { baz: 'test' } } 

NewObj ở đây không thay đổi khi cập nhật lên obj ban đầu, vì vậy việc sao chép sâu đã thành công.