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

View in English Always switch to English

ArrayBuffer.prototype.transferToFixedLength()

Baseline 2024
最近利用可能

March 2024以降、この機能は最新のバージョンの端末およびブラウザーで動作します。古い端末やブラウザーでは動作しないことがあります。

transferToFixedLength()ArrayBuffer インスタンスのメソッドで、このバッファと同じバイト内容を持つサイズ変更不可能な新しい ArrayBuffer を作成し、その後でこのバッファを分離します。

構文

js
transferToFixedLength()
transferToFixedLength(newByteLength)

引数

newByteLength

新しい ArrayBufferbyteLength です。デフォルト値はこの ArrayBufferbyteLength です。

  • newByteLength がこの ArrayBufferbyteLength より小さい場合、「オーバーフロー」したバイトは破棄されます。
  • newByteLength がこの ArrayBufferbyteLength より大きい場合、余分なバイトはゼロで埋められます。

返値

新しい ArrayBuffer オブジェクトです。その内容は、この ArrayBuffer の内容で初期化され、余分なバイトがある場合はゼロで埋められます。新しい ArrayBuffer は、常にサイズ変更不可能です。元の ArrayBuffer は切り離されます。

例外

TypeError

この ArrayBuffer が既に分離されている場合、または指定された操作によってのみ分離可能な場合に発生します。現在、GPUBuffer.getMappedRange()WebAssembly.Memory.buffer などの特定の Web API のみが、指定された分離メソッドを持つ ArrayBuffer オブジェクトを作成できます。

解説

transfer() とは異なり、transferToFixedLength() は常にサイズ変更不可の ArrayBuffer を作成します。これは、この ArrayBuffer がサイズ変更可能であっても、newByteLengthmaxByteLength より大きくできるということです。詳細については、詳細については、ArrayBuffer の移譲を参照してください。

リサイズ可能な ArrayBuffer を固定長のものに移譲

js
const buffer = new ArrayBuffer(8, { maxByteLength: 16 });
const view = new Uint8Array(buffer);
view[1] = 2;
view[7] = 4;

const buffer2 = buffer.transferToFixedLength();
console.log(buffer2.byteLength); // 8
console.log(buffer2.resizable); // false
const view2 = new Uint8Array(buffer2);
console.log(view2[1]); // 2
console.log(view2[7]); // 4

transferToFixedLength を使用する場合、newByteLength は元の ArrayBuffermaxByteLength よりも大きくすることができます。

js
const buffer = new ArrayBuffer(8, { maxByteLength: 16 });
const view = new Uint8Array(buffer);
view[1] = 2;
view[7] = 4;

const buffer2 = buffer.transferToFixedLength(20);
console.log(buffer2.byteLength); // 20
console.log(buffer2.resizable); // false
const view2 = new Uint8Array(buffer2);
console.log(view2[1]); // 2
console.log(view2[7]); // 4

仕様書

仕様書
ECMAScript® 2027 Language Specification
# sec-arraybuffer.prototype.transfertofixedlength

ブラウザーの互換性

関連情報