このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。

View in English Always switch to English

Symbol.dispose

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Symbol.dispose は静的データプロパティであり、ウェルノウンシンボルSymbol.dispose を表します。using 宣言は、変数の初期化子において、変数がスコープ外になった際に呼び出すメソッドとしてこのシンボルを検索します。

ウェルノウンシンボル Symbol.dispose です。

Symbol.dispose のプロパティ属性
書込可能不可
列挙可能不可
設定可能不可

解説

処分可能な (disposable) オブジェクトとは、 [Symbol.dispose]() メソッドを備えたオブジェクトです。このメソッドは、以下のようなセマンティクスを持つことが期待されます。

  • このメソッドを呼び出すことで、呼び出し元がこのオブジェクトの使用を継続する意図がないことを、処分可能なオブジェクトに伝えます。このメソッドは、ファイルシステムハンドル、ストリーム、ホストオブジェクトなど、リソースを明示的にクリーンアップするために必要なロジックを実行する必要があります。
  • このメソッドで例外が発生した場合、通常はリソースを解放できなかったことを意味します。
  • 同じオブジェクトにおいて 2 回以上呼び出された場合に、メソッドは例外を発生させるべきではありません。ただし、この要件は強制ではありません。

このメソッドはプロミスを返すべきではありません。なぜなら、[Symbol.dispose]() が返すプロミスは 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 

仕様書

Specification
ECMAScript Async Explicit Resource Management
# table-1

ブラウザーの互換性

関連情報