object.assign() deep copy in javascript

Object là thứ làm cho JavaScript trở thành một ngôn ngữ lập trình mạnh mẽ. Các đối tượng cho phép bạn nhóm các kiểu dữ liệu khác nhau. Nếu bạn muốn tìm hiểu bất kỳ khung JavaScript mới nào như React, Vue hoặc Angular, bạn phải biết cách sử dụng các đối tượng và các phương thức của nó.

Các phiên bản JavaScript mới mang lại các phương thức mới cho các đối tượng khiến chúng trở nên thú vị hơn. JS hiện tại cung cấp rất nhiều phương thức mới. Và trong bài này mình chỉ tìm hiểu và giới thiệu cho những bạn chưa biết về object.assign().

Tham gia cùng chúng tôi:

Facebook: Cộng đồng lập trình javascript

Facebook Cộng đồng giới thiệu bài viết, website, sản phẩm tăng traffic.

object.assign() là một trong những method hiệu quả với những người code sâu về JS. Cho nên các bạn đang tìm hiểu về JS cũng nên tìm hiểu và áp dụng chúng trong những trường hợp sau...

object.assign() -> Một trong những method mà mình ưa thích như Set() khi sử dụng với array.

object.assign() là gì?

object.assign() là một method nhưng (multiple jobs) nó có nhiều nhiệm vụ trong đó bao gồm những nhiệm vụ copy an object, clone từ một object khác, và nối hai hay nhiều object lại với nhau. 

Giờ ta đi những ví dụ cụ thể hơn nhằm để hiểu rõ hơn

1 - copy the values from another object:

const obj1 = {
name: 'Anony Stick'
}
const obj2 = {
age: 25,
  car: 'Vinfast',
  school: 'VinSchool'  
}
Object.assign(obj1, obj2);
console.log(obj1);
//{name: "Anony Stick", age: 25, car: "Vinfast", school: "VinSchool"}


2 - Clone từ object khác:

//Clone an object to a new object
const obj3 = {
age: 25,
  car: 'Vinfast',
  school: 'VinSchool'  
}
const obj4 = Object.assign({}, obj3);
console.log(obj4);
//{age: 25, car: "Vinfast", school: "VinSchool"}


3 - Dùng để merge duplicate properties trong object:

 //merge duplicate properties with Object.assign()
const obj5 = {
name: 'Pham Nhat Vuong',
age: 55,
  car: 'Vinfast',
  school: 'VinSchool'  
}
const obj6 = {
name: 'Pham Nhat Phong',
age: 25,
  moto: 'VinBike',
  spot: 'Bong da'  
}
const obj7 = Object.assign({}, obj5, obj6);
console.log(obj7);
//{name: "Pham Nhat Phong", age: 25, car: "Vinfast", school: "VinSchool", moto: "VinBike", …}


4 - JavaScript Snippet

'use strict';

// Merge an object
let first = {name: 'Tony'};
let last = {lastName: 'Stark'};
let person = Object.assign(first, last);
ChromeSamples.log(person);
// {name: 'Tony', lastName: 'Stark'}
ChromeSamples.log(first);
// first = {name: 'Tony', lastName: 'Stark'} as the target also changed

// Merge multiple sources
let a = Object.assign({foo: 0}, {bar: 1}, {baz: 2});
ChromeSamples.log(a);
// {foo: 0, bar: 1, baz: 2}

// Merge and overwrite equal keys
let b = Object.assign({foo: 0}, {foo: 1}, {foo: 2});
ChromeSamples.log(b);
// {foo: 2}

// Clone an object
let obj = {person: 'Thor Odinson'};
let clone = Object.assign({}, obj);
ChromeSamples.log(clone);
// {person: 'Thor Odinson'}

Kết luận : 

Tham gia cùng chúng tôi:

Facebook: Cộng đồng lập trình javascript

Facebook Cộng đồng giới thiệu bài viết, website, sản phẩm tăng traffic.
Tôi vừa trình bày các phương thức dựng sẵn mới được giới thiệu bởi JavaScript. Với các tính năng tuyệt vời mới này, chúng ta không sử dụng cú pháp và phương pháp cũ nữa trong mã của mình. Các phương thức mới cho phép bạn viết mã JavaScript thành thạo và hiệu suất cao hơn và giản tiện rất nhiều trong các dự án.