Symbol.dispose

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

Symbol.dispose 靜態資料屬性表示 知名 Symbol Symbol.disposeusing 宣告會在變數離開作用域時查詢變數初始化器上的此 Symbol,並呼叫對應的方法。

知名 Symbol Symbol.dispose

Symbol.dispose 的屬性特性
可寫
可列舉
可配置

描述

如果一個物件具有 [Symbol.dispose]() 方法,則該物件是可處置的。該方法應遵循以下語義:

  • 呼叫此方法表示呼叫者不再打算繼續使用該物件。此方法應執行任何必要的邏輯來顯式清理資源,包括但不限於檔案系統控制代碼、流、宿主物件等。
  • 當從該方法中丟擲異常時,通常意味著資源未能被顯式釋放。
  • 如果對同一物件呼叫該函式一次以上,函式不應丟擲異常。但是,此要求並未強制執行。

此方法不應返回 Promise,因為 [Symbol.dispose]() 返回的 Promise 不會被 await using 等待。要宣告非同步可處置物件,請使用 Symbol.asyncDispose

示例

使用者自定義的可處置物件

[Symbol.dispose] 允許建立自定義的可處置物件。有關更多資訊,請參閱 using 參考。

js
class Disposable {
  constructor() {
    this.disposed = false;
  }

  [Symbol.dispose]() {
    this.disposed = true;
  }

  get isDisposed() {
    return this.disposed;
  }
}

const resource = new Disposable();
{
  using resourceUsed = resource;
  console.log(resource.isDisposed); // false
}
console.log(resource.isDisposed); // true

規範

規範
ECMAScript 非同步顯式資源管理
# 表格-1

瀏覽器相容性

另見