Làm chủ Set và WeakSet: Bí kíp tối ưu bộ nhớ trong JavaScript

· 2 phút để đọc· Phan Thành Công
weakset

Set và WeakSet: Hai người anh em, hai tính cách

JavaScript cung cấp cho chúng ta hai công cụ hữu ích để quản lý các tập hợp dữ liệu duy nhất: SetWeakSet. Thoạt nhìn, chúng có vẻ giống nhau, nhưng thực chất lại có những điểm khác biệt quan trọng mà bạn cần nắm rõ để sử dụng chúng hiệu quả.

Set: Bộ sưu tập đa năng

Set giống như một chiếc hộp thần kỳ, có thể chứa bất cứ thứ gì bạn muốn: số, chuỗi, đối tượng, thậm chí cả những Set khác. Bạn có thể dễ dàng thêm, xóa, kiểm tra sự tồn tại của các phần tử, và thậm chí duyệt qua toàn bộ tập hợp.

const mySet = new Set([1, 2, 3, "xin chào", { name: "Babel" }]);
mySet.add(5);
console.log(mySet.has("xin chào")); // true

WeakSet: Người bảo vệ thầm lặng

WeakSet thì lại kín đáo hơn. Nó chỉ chấp nhận các đối tượng và giữ chúng bằng một "sợi dây" lỏng lẻo. Nếu không còn ai khác giữ đối tượng đó,WeakSet sẽ tự động thả ra, giúp bạn tránh được tình trạng rò rỉ bộ nhớ.

const processedObjs = new WeakSet();

function process(obj) {
  if (processedObjs.has(obj)) {
    return; // Đối tượng đã được xử lý trước đó
  }

  // Xử lý đối tượng
  processedObjs.add(obj);
}

Khi nào nên dùng Set, khi nào nên dùng WeakSet?

  • Set: Khi bạn cần một tập hợp đa năng, có thể chứa mọi loại dữ liệu và hỗ trợ đầy đủ các thao tác.
  • WeakSet: Khi bạn chỉ cần theo dõi các đối tượng duy nhất và muốn tránh rò rỉ bộ nhớ.

Lưu ý:

  • WeakSet không cho phép bạn duyệt qua các phần tử của nó.
  • Cả SetWeakSet đều không đảm bảo thứ tự của các phần tử.

Kết luận:

Hiểu rõ sự khác biệt giữa SetWeakSet sẽ giúp bạn đưa ra lựa chọn đúng đắn và tối ưu hóa ứng dụng JavaScript của mình. Hãy thử nghiệm và khám phá thêm những khả năng thú vị của hai công cụ này nhé!

Đọc thêm: Mdm Về WeakSet

Phan Thành Công

Phan Thành Công

Lập trình viên đam mê và sáng tạo, cùng với vai trò là YouTuber, Blogger, và TikToker.


Copyright © 2024 AnhDangCode. All rights reserved.
Phan Thành Công· Github
youtubeyoutubeyoutube