A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/transfer below:

ArrayBuffer.prototype.transfer() - JavaScript | MDN

ArrayBuffer.prototype.transfer()

Baseline 2024

Newly available

Die transfer() Methode von ArrayBuffer Instanzen erstellt einen neuen ArrayBuffer mit demselben Byte-Inhalt wie dieser Puffer und trennt dann diesen Puffer.

Syntax
transfer()
transfer(newByteLength)
Parameter
newByteLength Optional

Die byteLength des neuen ArrayBuffer. Standardmäßig die byteLength dieses ArrayBuffer.

Rückgabewert

Ein neues ArrayBuffer Objekt. Sein Inhalt ist initialisiert auf den Inhalt dieses ArrayBuffer, und zusätzliche Bytes, falls vorhanden, sind mit Nullen gefüllt. Der neue ArrayBuffer ist anpassbar genau dann, wenn dieser ArrayBuffer anpassbar ist, in welchem Fall sein maxByteLength derselbe ist wie der dieses ArrayBuffer. Der ursprüngliche ArrayBuffer ist getrennt.

Ausnahmen
RangeError

Ausgelöst, wenn dieser ArrayBuffer anpassbar ist und newByteLength größer als der maxByteLength dieses ArrayBuffer ist.

TypeError

Ausgelöst, wenn dieser ArrayBuffer bereits getrennt ist.

Beschreibung

Die transfer() Methode führt dieselbe Operation durch wie der strukturierte Klonalgorithmus. Sie kopiert die Bytes dieses ArrayBuffer in ein neues ArrayBuffer Objekt und trennt dann dieses ArrayBuffer Objekt. Weitere Informationen finden Sie unter Übertragen von ArrayBuffers.

transfer() bewahrt die Anpassbarkeit dieses ArrayBuffer. Wenn Sie möchten, dass der neue ArrayBuffer nicht anpassbar ist, verwenden Sie stattdessen transferToFixedLength(). Es gibt keine Möglichkeit, einen Puffer zu übertragen, der einen Puffer fester Länge anpassbar macht.

transfer() ist sehr effizient, da Implementierungen diese Methode als eine Zero-Copy-Bewegung oder als realloc implementieren können — es muss kein tatsächliches Kopieren der Daten erfolgen.

Beispiele Übertragen eines ArrayBuffer
// Create an ArrayBuffer and write a few bytes
const buffer = new ArrayBuffer(8);
const view = new Uint8Array(buffer);
view[1] = 2;
view[7] = 4;

// Copy the buffer to the same size
const buffer2 = buffer.transfer();
console.log(buffer.detached); // true
console.log(buffer2.byteLength); // 8
const view2 = new Uint8Array(buffer2);
console.log(view2[1]); // 2
console.log(view2[7]); // 4

// Copy the buffer to a smaller size
const buffer3 = buffer2.transfer(4);
console.log(buffer3.byteLength); // 4
const view3 = new Uint8Array(buffer3);
console.log(view3[1]); // 2
console.log(view3[7]); // undefined

// Copy the buffer to a larger size
const buffer4 = buffer3.transfer(8);
console.log(buffer4.byteLength); // 8
const view4 = new Uint8Array(buffer4);
console.log(view4[1]); // 2
console.log(view4[7]); // 0

// Already detached, throws TypeError
buffer.transfer(); // TypeError: Cannot perform ArrayBuffer.prototype.transfer on a detached ArrayBuffer
Übertragen eines anpassbaren ArrayBuffer
const buffer = new ArrayBuffer(8, { maxByteLength: 16 });
const view = new Uint8Array(buffer);
view[1] = 2;
view[7] = 4;

// Copy the buffer to a smaller size
const buffer2 = buffer.transfer(4);
console.log(buffer2.byteLength); // 4
console.log(buffer2.maxByteLength); // 16
const view2 = new Uint8Array(buffer2);
console.log(view2[1]); // 2
console.log(view2[7]); // undefined
buffer2.resize(8);
console.log(view2[7]); // 0

// Copy the buffer to a larger size within maxByteLength
const buffer3 = buffer2.transfer(12);
console.log(buffer3.byteLength); // 12

// Copy the buffer to a larger size than maxByteLength
buffer3.transfer(20); // RangeError: Invalid array buffer length
Spezifikationen Browser-Kompatibilität Siehe auch

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4