Tôi đã chạy qua một JavaScript library triển khai một trình duyệt chéo WeakMap trong ES5. (WeakMap được dự kiến cho ES6.)Triển khai WeakMap trong EcmaScript5?
Làm thế nào điều này có thể hoạt động mà không có hỗ trợ trong chính ngôn ngữ JavaScript?
Edit: Chỉ cần được rõ ràng, tôi đề cập đến một bản đồ Yếu, không một bản đồ thông thường. Tôi đã thử nghiệm dự án này bằng cách sử dụng trình thu thập của Chrome và các khóa không được tổ chức bởi các tham chiếu mạnh mẽ. Họ nhận được GC'ed mà không cần phải loại bỏ chúng khỏi WeakMap.
Cân nhắc nghiên cứu mã nguồn. –
@squint Nó đang làm một cái gì đó khá sâu-- Tôi không thể tìm ra cách nó không giữ một tham chiếu mạnh mẽ đến các phím. Ví dụ, nó không sử dụng các mảng. – paleozogt
WeakMaps là một tính năng ES6 cho phép bạn kết hợp dữ liệu với một đối tượng, nhưng vẫn để dữ liệu đó được thu thập rác khi đối tượng -OR- bản thân WeakMap chính là rác được thu thập. Không thể thực hiện cả hai điều này mà không cần hỗ trợ ngôn ngữ. Hầu hết các bản đồ WeakMap bỏ qua phần về việc cho phép dữ liệu được GC'd khi bản thân WeakMap là GC'd. – AgentME