FinalizationRegistry.prototype.register()
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.
* Some parts of this feature may have varying levels of support.
Phương thức register() của các instance FinalizationRegistry đăng ký một giá trị với FinalizationRegistry này để nếu giá trị bị thu gom rác, callback của registry có thể được gọi.
Cú pháp
register(target, heldValue)
register(target, heldValue, unregisterToken)
Tham số
target-
Giá trị target cần đăng ký.
heldValue-
Giá trị cần truyền vào finalizer cho
targetnày. Không thể là chínhtargetnhưng có thể là bất cứ thứ gì khác, bao gồm hàm và các kiểu nguyên thủy. unregisterTokenOptional-
Một token có thể được dùng với phương thức
unregistersau này để hủy đăng ký giá trị target. Nếu được cung cấp (và không phảiundefined), đây phải là một đối tượng hoặc symbol không đăng ký. Nếu không được cung cấp, target không thể bị hủy đăng ký.
Giá trị trả về
Không có (undefined).
Ngoại lệ
TypeError-
Được ném ra trong một trong các trường hợp sau:
targetkhông phải là đối tượng hoặc symbol không đăng ký (đối tượng trái ngược với các kiểu nguyên thủy; hàm cũng là đối tượng)targetgiống vớiheldValue(target === heldValue)unregisterTokenkhông phải là đối tượng hoặc symbol không đăng ký
Mô tả
Xem các phần Tránh sử dụng nếu có thể và Ghi chú về cleanup callback trên trang FinalizationRegistry để biết các cảnh báo quan trọng.
Ví dụ
>Sử dụng register
Đoạn code sau đăng ký giá trị được tham chiếu bởi target, truyền vào held value "some value" và truyền chính target làm unregistration token:
registry.register(target, "some value", target);
Đoạn code sau đăng ký giá trị được tham chiếu bởi target, truyền vào một đối tượng khác làm held value, và không truyền vào bất kỳ unregistration token nào (nghĩa là target không thể bị hủy đăng ký):
registry.register(target, { useful: "info about target" });
Đặc tả kỹ thuật
| Thông số kỹ thuật |
|---|
| ECMAScript® 2027 Language Specification> # sec-finalization-registry.prototype.register> |