この記事は編集レビューを必要としています。ぜひご協力ください。
この翻訳は不完全です。英語から この記事を翻訳 してください。
This is an experimental technology, part of the ECMAScript 2016 (ES7) proposal.
Because this technology's specification has not stabilized, check the compatibility table for usage in various browsers. Also note that the syntax and behavior of an experimental technology is subject to change in future version of browsers as the spec changes.
概要
静的なArrayBuffer.transfer() メソッドは、oldBufferのデータから得られる内容の新しいArrayBufferを返します。newByteLengthによって切断されるかゼロ拡張されます。newByteLengthがundefinedなら、oldBufferのbyteLengthが使われます。この操作は切り離された状態でoldBufferを見捨てます。
構文
ArrayBuffer.transfer(oldBuffer [, newByteLength]);
引数
oldBuffer- 転送するための
ArrayBufferオブジェクト - newByteLength
- 新しい
ArrayBufferオブジェクトのバイト長
説明
ArrayBuffer.transfer() メソッドによって、ArrayBufferオブジェクトを成長し、デタッチできます。コピーなしでArrayBufferを成長される能力は大規模バッファに対してもっと早くなる利点を持っています。ArrayBufferをデタッチする能力は根本的にメモリがリリースされるときを開発者が明示的に制御することができます。これにより、すべての参照を削除し、ガベージコレクションを待つことを避けます。
例
var buf1 = new ArrayBuffer(40); new Int32Array(buf1)[0] = 42; var buf2 = ArrayBuffer.transfer(buf1, 80); buf1.byteLength; // 0 buf2.byteLength; // 80 new Int32Array(buf2)[0]; // 42 var buf3 = ArrayBuffer.transfer(buf2, 0); buf2.byteLength; // 0 buf3.byteLength; // 0
仕様
すべての現在の仕様のドラフトではサポートされていません。しかし、ES7に対して提案されています。
ブラウザ実装状況
| 機能 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
|---|---|---|---|---|---|
| 基本サポート | 未サポート | Available in Nightly channel only (since 2014-10-20) | 未サポート | 未サポート | 未サポート |
| 機能 | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| 基本サポート | 未サポート | 未サポート | Available in Nightly channel only (since 2014-10-20) | 未サポート | 未サポート | 未サポート |