Serializable errors
シリアライズ可能オブジェクトは、どのような JavaScript 環境 ("realm") でもシリアライズし、後でデシリアライズすることができるオブジェクトです。 これは例えば、ディスクに格納し後から復元したり、structuredClone() で複製したり、DedicatedWorkerGlobalScope.postMessage() を使用してワーカー間で共有したりすることができます。
シリアライズは、元のオブジェクトのすべてのプロパティや、その他の一部を含まないことがあります。 例えば、DOMException のシリアライズには name および message プロパティは必ず含まれますが、他のプロパティが含まれるかどうかは実装に依存します。 結果的に、デシリアライズされたオブジェクトは元オブジェクトと同一のクローン/複製とは限りません。 しかし、デシリアライズされた新しいオブジェクトはディープコピーになるので、元のオブジェクトからシリアライズされ、新しいオブジェクトにデシリアライズされたプロパティは、元のオブジェクトと参照することはありません。
オブジェクトをシリアライズしたりデシリアライズしたりするときに、コピーを作成するよりもリソースを移譲したほうが理にかなっている場合があります。 移譲可能なオブジェクトは移譲可能オブジェクトと呼ばれます。
対応ブラウザ
| 機能 | デスクトップ | モバイル | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
api.DOMException.serializable_object | 77 | 79 | 101 | | 77 | |
| ビルトインオブジェクト | ||||||
| シリアライズ可能オブジェクトは、どのような JavaScript 環境 ("realm") でもシリアライズし、後でデシリアライズすることができるオブジェクトです。 これは例えば、ディスクに格納し後から復元したり、structuredClone() で複製したり、DedicatedWorkerGlobalScope.postMessage() を使用してワーカー間で共有したりすることができます。 | 77 | 79 | 103 | | 77 | |
| シリアライズ可能オブジェクトは、どのような JavaScript 環境 ("realm") でもシリアライズし、後でデシリアライズすることができるオブジェクトです。 これは例えば、ディスクに格納し後から復元したり、structuredClone() で複製したり、DedicatedWorkerGlobalScope.postMessage() を使用してワーカー間で共有したりすることができます。 | 77 | 79 | 103 | | 77 | |
| シリアライズ可能オブジェクトは、どのような JavaScript 環境 ("realm") でもシリアライズし、後でデシリアライズすることができるオブジェクトです。 これは例えば、ディスクに格納し後から復元したり、structuredClone() で複製したり、DedicatedWorkerGlobalScope.postMessage() を使用してワーカー間で共有したりすることができます。 | 77 | 79 | 103 | | 77 | |
| シリアライズ可能オブジェクトは、どのような JavaScript 環境 ("realm") でもシリアライズし、後でデシリアライズすることができるオブジェクトです。 これは例えば、ディスクに格納し後から復元したり、structuredClone() で複製したり、DedicatedWorkerGlobalScope.postMessage() を使用してワーカー間で共有したりすることができます。 | 77 | 79 | 103 | | 77 | |
| シリアライズ可能オブジェクトは、どのような JavaScript 環境 ("realm") でもシリアライズし、後でデシリアライズすることができるオブジェクトです。 これは例えば、ディスクに格納し後から復元したり、structuredClone() で複製したり、DedicatedWorkerGlobalScope.postMessage() を使用してワーカー間で共有したりすることができます。 | 77 | 79 | 103 | | 77 | |
| シリアライズ可能オブジェクトは、どのような JavaScript 環境 ("realm") でもシリアライズし、後でデシリアライズすることができるオブジェクトです。 これは例えば、ディスクに格納し後から復元したり、structuredClone() で複製したり、DedicatedWorkerGlobalScope.postMessage() を使用してワーカー間で共有したりすることができます。 | 77 | 79 | 103 | | 77 | |
| シリアライズ可能オブジェクトは、どのような JavaScript 環境 ("realm") でもシリアライズし、後でデシリアライズすることができるオブジェクトです。 これは例えば、ディスクに格納し後から復元したり、structuredClone() で複製したり、DedicatedWorkerGlobalScope.postMessage() を使用してワーカー間で共有したりすることができます。 | 77 | 79 | 103 | | 77 | |
- バージョン 103 のシリアライズされたプロパティ:name`, `message`, `cause`, `fileName`, `lineNumber` と `columnNumber` である。
- バージョン104では、メインスレッドでの `stack` のシリアライズが追加された(`window.postMessage()`と `structuredClone()`)。
- バージョン 110 では、ワーカー (`worker.postMessage()` と `structuredClone()`) における `stack` のシリアライズが追加された。
- バージョン 103 のシリアライズ可能なプロパティ:name`、`message`、`cause`、`fileName`、`lineNumber` および `columnNumber` である。
- バージョン104では、メインスレッドでも `stack` をシリアライズする(`window.postMessage()` と `structuredClone()`)。
- バージョン 110 では、ワーカー(`worker.postMessage()` と `structuredClone()`)でも `stack` をシリアライズするようになった。
- バージョン 103 のシリアライズ可能なプロパティ:name`、`message`、`cause`、`fileName`、`lineNumber` および `columnNumber` である。
- バージョン104では、メインスレッドでも `stack` をシリアライズする(`window.postMessage()` と `structuredClone()`)。
- バージョン 110 では、ワーカー(`worker.postMessage()` と `structuredClone()`)でも `stack` をシリアライズするようになった。
- バージョン 103 のシリアライズ可能なプロパティ:name`、`message`、`cause`、`fileName`、`lineNumber` および `columnNumber` である。
- バージョン104では、メインスレッドでも `stack` をシリアライズする(`window.postMessage()` と `structuredClone()`)。
- バージョン 110 では、ワーカー(`worker.postMessage()` と `structuredClone()`)でも `stack` をシリアライズするようになった。
- バージョン 103 のシリアライズ可能なプロパティ:name`、`message`、`cause`、`fileName`、`lineNumber` および `columnNumber` である。
- バージョン104では、メインスレッドでも `stack` をシリアライズする(`window.postMessage()` と `structuredClone()`)。
- バージョン 110 では、ワーカー(`worker.postMessage()` と `structuredClone()`)でも `stack` をシリアライズするようになった。
- バージョン 103 のシリアライズ可能なプロパティ:name`、`message`、`cause`、`fileName`、`lineNumber` および `columnNumber` である。
- バージョン104では、メインスレッドでも `stack` をシリアライズする(`window.postMessage()` と `structuredClone()`)。
- バージョン 110 では、ワーカー(`worker.postMessage()` と `structuredClone()`)でも `stack` をシリアライズするようになった。
- バージョン 103 のシリアライズ可能なプロパティ:name`、`message`、`cause`、`fileName`、`lineNumber` および `columnNumber` である。
- バージョン104では、メインスレッドでも `stack` をシリアライズする(`window.postMessage()` と `structuredClone()`)。
- バージョン 110 では、ワーカー(`worker.postMessage()` と `structuredClone()`)でも `stack` をシリアライズするようになった。
基本構文
// Serializable errors example
// See MDN Web Docs for details ライブデモ
実務での使いどころ
-
Serializable errors の活用
シリアライズ可能オブジェクトは、どのような JavaScript 環境 ("realm") でもシリアライズし、後でデシリアライズすることができるオブジェクトです。
注意点
- 一部のブラウザでのみ対応。使用前にブラウザサポートを確認すること。
アクセシビリティ
- JavaScript による動的更新時は、aria-live リージョンで変更をスクリーンリーダーに通知する。