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

js
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 target này. Không thể là chính target như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.

unregisterToken Optional

Một token có thể được dùng với phương thức unregister sau này để hủy đăng ký giá trị target. Nếu được cung cấp (và không phải undefined), đâ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:

  • target khô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)
  • target giống với heldValue (target === heldValue)
  • unregisterToken khô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ể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:

js
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ý):

js
registry.register(target, { useful: "info about target" });

Đặc tả kỹ thuật

Specification
ECMAScript® 2027 Language Specification
# sec-finalization-registry.prototype.register

Tương thích trình duyệt

Xem thêm