Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
This feature is not Baseline because it does not work in some of the most widely-used browsers.
DisposableStack オブジェクトは、ディスポーザーのスタックを表します。スタックに登録したディスポーザーは、スタック自体が破棄される時に実行されます。ディスポーザーの関数は、強力なエラーハンドリングによる保証の元、登録した順番とは逆の順番で実行されます。ディスポーザーの move() メソッドを呼び出すと、現在登録しているディスポーザーを新しい DisposableStack に呼び出す責任を移譲し、追加のディスポーザーの登録を防止します。
DisposableStack は、そのインターフェイスの観点から見ると、厳密には「スタック」ではありません。ディスポーザーをスタックにプッシュするためのメソッドはいくつかありますが、ディスポーザーを一つポップする方法はありません。それどころか、スタックが破棄されるときに すべての ディスポーザーが一つずつポップされて実行されます。
DisposableStackに破棄可能なリソースを登録するには、use()、adopt()、またはdefer()メソッドを使用します。
そして disposer がスコープ外になると、move() で移動されていない限り、登録されたすべてのリソースが登録の逆順で破棄されます。
リソースを取得する式がどれほど長くても、別の文に 切り出さない ことが良い習慣です。use() または adopt() の呼び出しでリソースを取得する式を常にラップして、リソースが直ちにスタックに登録されることを保証する必要があります。
これら二つのコードスニペットは機能的には同等です。しかし、最初の方がリソースが一行で宣言され登録されるため、エラーが起こりにくいです。もし誰かが二番目のスニペットにおいて二行目と三行目の間にさらにコードを追加した場合、エラーが発生しリソースがリークする可能性があります。
新しい DisposableStack オブジェクトを作成します。
これらのプロパティは DisposableStack.prototype で定義されており、すべての DisposableStack インスタンスで共有されます。
DisposableStack.prototype.constructorインスタンスオブジェクトを作成したコンストラクター関数。DisposableStack インスタンスの場合、初期値は DisposableStack コンストラクターです。
DisposableStack.prototype.disposed読み取り専用。DisposableStack が破棄されている場合は true、そうでない場合は false を返します。
DisposableStack.prototype[Symbol.toStringTag][Symbol.toStringTag] プロパティの初期値は文字列 "DisposableStack" です。このプロパティは Object.prototype.toString() で使用されます。
スタックに破棄可能プロトコルを実装していない値を、カスタムのディスポーザー関数を提供することで登録します。
DisposableStack.prototype.defer()スタックが破棄されるときに呼び出される、コールバック関数を受け取ります。
DisposableStack.prototype.dispose()登録された順番とは逆の順番で、スタックに登録されたすべてのディスポーザーを呼び出し、スタックを破棄します。
DisposableStack.prototype.move()スタック内に同じディスポーザーを含む新しい DisposableStack インスタンスを作成し、ディスポーザーをまったく呼び出すことなくスタックを破棄済みとしてマークします。
DisposableStack.prototype.use()破棄可能プロトコルを実装している値をスタックに登録します。
DisposableStack.prototype[Symbol.dispose]dispose() メソッドのエイリアス。
| ECMAScript Async Explicit Resource Management # sec-disposablestack-objects |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 2025年12月20日 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.