FinalizationRegistry.prototype.register()
Baseline 廣泛可用 *
register() 方法用於將一個值註冊到 FinalizationRegistry 例項中,以便在該值被垃圾回收時,可以呼叫登錄檔的 [callback function](https://mdn.club.tw/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry#callback_function) 。
語法
register(target, heldValue)
register(target, heldValue, unregisterToken)
引數
目標-
要註冊的目標值。
heldValue-
要傳遞給此
target的 finalizer 的值。它不能是target本身,但可以是任何其他內容,包括函式和原始型別。 unregisterToken可選-
一個可用於稍後透過
unregister方法取消註冊目標值的 token。如果提供了此引數(且不為undefined),則它必須是一個物件或一個 [未註冊的 Symbol](https://mdn.club.tw/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#shared_symbols_in_the_global_symbol_registry)。如果未提供,則無法取消註冊目標。
返回值
無(undefined)。
異常
TypeError-
在以下情況之一中丟擲
target不是一個物件或一個 [未註冊的 Symbol](https://mdn.club.tw/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#shared_symbols_in_the_global_symbol_registry)(與原始型別相對,函式也是物件)target和heldValue相同 (target === heldValue)unregisterToken不是一個物件或一個 [未註冊的 Symbol](https://mdn.club.tw/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#shared_symbols_in_the_global_symbol_registry)
描述
有關重要的注意事項,請參閱 FinalizationRegistry 頁面的 [Avoid where possible](https://mdn.club.tw/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry#avoid_where_possible) 和 [Notes on cleanup callbacks](https://mdn.club.tw/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry#notes_on_cleanup_callbacks) 部分。
示例
使用 register
以下程式碼註冊了由 target 引用的值,傳遞了 held 值 "some value",並將 target 本身作為 unregistration token:
registry.register(target, "some value", target);
以下程式碼註冊了由 target 引用的值,傳遞了另一個物件作為 held 值,並且沒有傳遞任何 unregistration token(這意味著 target 無法被取消註冊):
registry.register(target, { useful: "info about target" });
規範
| 規範 |
|---|
| ECMAScript® 2026 語言規範 # sec-finalization-registry.prototype.register |
瀏覽器相容性
載入中…