この記事は編集レビューを必要としています。ぜひご協力ください。
この翻訳は不完全です。英語から この記事を翻訳 してください。
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) | 未サポート | 未サポート | 未サポート |