Hướng dẫn dùng assign JavaScript

Hướng dẫn dùng assign JavaScript

Đã đăng vào thg 4 21, 2019 4:57 CH 2 phút đọc

Khi chúng ta làm việc với Js, cụ thể ơn là ReactJs, hẳn chúng ta đã nghe tới tính bất biến của dữ liệu (immutability). Hiểu một cách nôm na đó là khả năng giá trị của dữ liệu không bị thay đổi sau khi đã được khai báo. Tính bất biết còn làm tăng hiệu suất của ứng dụng, khả năng kiểm soát và debugg một cách nhanh chóng hơn.

Để hiểu rõ hơn chúng ta sẽ cùng nhau tìm hiểu về cú pháp và thông qua các ví dụ để có thể nắm rõ được ưu điểm này của nó và cách sử dụng.

Khái niệm

Object.assign() được sử dụng để sao chép các giá trị của tất cả thuộc tính có thể liệt kê từ một hoặc nhiều đối tượng nguồn đến một đối tượng đích. Nó sẽ trả về đối tượng đích đó.

Cú pháp

Object.assign(target, ...sources)

Các tham số:

  • targer: Đối tượng đích
  • sources: Các đối tượng nguồn

Giá trị trả về: Các đối tượng đích

Các thuộc tính trong đối tượng đích sẽ bị ghi lại bởi các thuộc tính trong đối tượng nguồn nếu chúng có cùng key. Tương tự, các thuộc tính nguồn sau sẽ ghi đè lên những thuộc tính nguồn trước.

Ví dụ:

var obj = { a: 1 };
var copy = Object.assign({}, obj);
console.log(copy); // { a: 1 }

Cần lưu ý để đảm bảo tính bất biến thì tham số target nên luôn là {}, vì khi đó các giá trị của sources sẽ được sao chép vào đối tượng mới. Một cách dùng sai là:

const a = { name: 'foo' }
const b = Object.assign(a, { name: 'bar', age: 1 }, { id: 9 })
console.log(b) // { name: 'bar', age: 1, id: 9 }
console.log(a) // Giá trị của a cũng bị thay đổi thành { name: 'bar', age: 1, id: 9 }
console.log(a === b) // true

Khi làm việc với nhiều object:

let o1 = { a: 21 };
let o2 = { b: 22 };
let o3 = { c: 24 };

const obj = Object.assign({},o1, o2, o3);
console.log(obj); //{a: 21, b: 22, c: 24}

Gộp các object với cùng properties:

let o1 = { a: 21, b: 22, c: 24 };
let o2 = { b: 25, c: 26 };
let o3 = { c: 27 };

let finalObj = Object.assign({}, o1, o2, o3);
console.log(finalObj);//{a: 21, b: 25, c: 27}

Để ý ví dụ trên, các thuộc tính được lặp lại bên trong các đối tượng nguồn thì trong đối tượng mới, các thuộc tính đó sẽ bị bỏ qua và chúng chỉ nhận được các thuộc tính duy nhất trên đối tượng đích. Và giá trị của chúng sẽ được cập nhật giá trị mới từ trái sang phải.

Trên đây là bài tìm hiểu của mình về Object.assign() trong JS. Hi vọng bài viết sẽ giúp bạn có một cái nhìn và cách sử dụng rõ hơn về một phương thức thường xuyên được sử dụng dạo gần đây, đặc biệt là trong ReactJs.

Tham khảo

https://appdividend.com/2018/12/27/javascript-object-assign-example-object-assign-tutorial/ https://developer.mozilla.org/vi/docs/Web/JavaScript/Reference/Global_Objects/Object/assign https://appdividend.com/2018/12/27/javascript-object-assign-example-object-assign-tutorial/

All rights reserved

Nội dung chính

  • Object.assign trong trong JavaScript
  • Gộp 2 object trong Javascript bằng Object.assign
  • Gộp các object vào một object rỗng bằng Object.assign
  • Sử dụng Object.assign để copy object trong JavaScript
  • Tổng kết

Hướng dẫn cách sử dụng object.assign trong javascript. Bạn sẽ biết phương thức Object.assign trong JavaScript là gì cũng như cách sử dụng nó để copy object và gộp 2 object trong Javascript sau bài học này.

Object.assign trong trong JavaScript

Object.assign trong trong JavaScript là một phương thức trong object Object, có tác dụng gộp toàn bộ các thuộc tính của một object vào cuối của một object khác.

Chúng ta sử dụng phương thức assign để gộp object trong JavaScript như sau:

Object.assign(dest, src1, src2, src3,...);

Trong đó dest là object đích chứa toàn bộ các object src cần gộp.

Phương thức assign() có khả năng gộp nhiều object lại với nhau và trả về một object kết quả chứa toàn bộ các thuộc tính của chúng. Chúng ta có thể chỉ định một object trong số chúng và gán các object còn lại vào nó, hoặc là tạo ra một object khác và gán toàn bộ các object vào.

Và dựa vào đó mà chúng ta có 2 style dùng assign() để gộp object trong JavaScript như sau.

Gộp 2 object trong Javascript bằng Object.assign

Với style này của Object.assign, chúng ta chỉ định một object đích từ các object ban đầu, và gán các object còn lại vào nó để gộp 2 object trong Javascript như sau:

let des = { a: 10, b: 15 };
let src = { c: 20 };

console.log('des=',des);


Object.assign(des, src)
console.log('des=',des);

Tất nhiên chúng ta cũng có thể gộp nhiều hơn 2 object như sau đây:

let des = { a: 10, b: 15 };
let src1 = { c: 20 };
let src2 = { d: 25 };

console.log('des=',des);


Object.assign(des, src1, src2)
console.log('des=',des);

Có thể thấy rõ các thuộc tính trong các object đã được ghép hết vào cuối object des như trên. Và sytle sử dụng phương thức Object.assign này sẽ làm thay đổi object ban đầu.

Chú ý, nếu tồn tại các thuộc tính trùng nhau trong các object thì chúng sẽ bị ghi đè bởi thuộc tính của object cuối cùng. Ví dụ:

let des = { a: 10, b: 15 };
let src1 = { c: 20, b: 40 };
let src2 = { d: 25, b: 88 };

console.log('des=',des);


Object.assign(des, src1, src2)
console.log('des=',des);

Giống như trên thì cả 3 object đều chứa thuộc tính b trùng nhau, tuy nhiên chỉ có thuộc tính của object cuối cùng b: 88 được dùng để ghi đè và là kết quả cuối cùng mà thôi.

Gộp các object vào một object rỗng bằng Object.assign

Với style này, thay vì chỉ định object đích từ trong các object ban đầu, chúng ta gán toàn bộ chúng vào một object rỗng như sau:

let des = { a: 10, b: 15 };
let src1 = { c: 20 };
let src2 = { d: 25 };

console.log('des=',des);


let result = Object.assign({}, des, src1, src2)

console.log('des=',des);
console.log('result=',result);

Với style này, chúng ta không làm thay đổi các object ban đầu, mà chỉ copy toàn bộ chúng để gán vào trong một object rỗng, qua đó tạo ra mảng kết quả chứa toàn bộ chúng mà thôi.

Sử dụng Object.assign để copy object trong JavaScript

Như đã phân tích trong bài copy object trong JavaScript thì chúng ta cũng có thể sử dụng phương thức Object.assign để copy object trong JavaScript.

Lúc này chúng ta chỉ cần chỉ định object đích là một object rỗng như style 2 ở trên là xong.

Ví dụ, chúng ta copy object trong JavaScript như sau:

let obj = { a: 10, b: 15 };
let newobj = Object.assign({}, obj);

console.log(newobj);

Việc copy object trong JavaScript bằng phương thức assign() không tạo ra mối quan hệ tham chiếu giữa object ban đầu và object kết quả, do đó chúng tồn tại độc lập và không bị ảnh hưởng kể cả khi một trong 2 chúng thay đổi thông qua các Xử lý object trong javascript. Ví dụ:

let obj = { a: 10, b: 15 };
let newobj = Object.assign({}, obj);

console.log(newobj);

obj.a =20;
console.log(newobj);

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về cách sử dụng Object.assign trong JavaScript rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về JavaScript trong các bài học tiếp theo.

Viết bởi Kiyoshi. Đã đăng ký bản quyền tác giả tại <a title="Bạn được tự do chia sẻ bài viết nhưng phải để lại đường link bài viết từ laptrinhcanban.com. Bạn không được sử dụng tài liệu cho mục đích thương mại. Không được phép chỉnh sửa nội dung được phát hành trên website của chúng tôi" style="color:#fff;background-color:silver" rel="license noopener" target="_blank" href="https://creativecommons.org/licenses/by-nc-nd/4.0/">Creativecommons</a>&nbsp;và <a title="Bạn được tự do chia sẻ bài viết nhưng phải để lại đường link bài viết từ laptrinhcanban.com. Bạn không được sử dụng tài liệu cho mục đích thương mại. Không được phép chỉnh sửa nội dung được phát hành trên website của chúng tôi" style="color:#fff;background-color:silver" target="_blank" rel="noopener" href="https://www.dmca.com/Protection/Status.aspx?ID=1631afcd-7c4a-467d-8016-402c5073e5cd" class="dmca-badge">DMCA</a><script src="https://images.dmca.com/Badges/DMCABadgeHelper.min.js">

Bài viết liên quan

Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!

HOME>> >>

Profile
Hướng dẫn dùng assign JavaScript

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.