Ce face ArrayBuffer.prototype.resize / transfer
Un buffer creat cu { maxByteLength } poate fi mărit sau micșorat cu resize, până la acea limită. Typed arrays create fără lungime fixă peste el își ajustează automat lungimea.
transfer mută conținutul într-un ArrayBuffer nou (opțional cu altă mărime) și „detașează” bufferul vechi: lungimea lui devine 0 și nu mai poate fi folosit. Este util ca să predai datele altei părți a programului fără copii accidentale. transferToFixedLength face același lucru, dar rezultatul nu mai poate fi redimensionat.
Parametri
| Parametru | Descriere |
|---|---|
octetiNoi |
Mărimea nouă în octeți (opțională la transfer). |
Ce returnează
resize: undefined. transfer: un ArrayBuffer nou.
Exemple
Exemplul 1: Un buffer care crește
const buffer = new ArrayBuffer(2, { maxByteLength: 8 });
const vedere = new Uint8Array(buffer);
console.log(buffer.resizable, vedere.length);
buffer.resize(6);
console.log(buffer.byteLength, vedere.length);
Rezultat
true 2
6 6
Exemplul 2: Transfer și detașare
const vechi = new Uint8Array([1, 2, 3]).buffer;
const nou = vechi.transfer(5);
console.log(vechi.detached, vechi.byteLength);
console.log(new Uint8Array(nou));
Rezultat
true 0
Uint8Array(5) [ 1, 2, 3, 0, 0 ]
Greșeli frecvente
- Apelezi
resizepe un buffer creat fărămaxByteLengthși primeștiTypeError. - Folosești un typed array creat peste un buffer transferat și primești
TypeError(buffer detașat).
Comenzi înrudite
ArrayBuffer: Un bloc de memorie brută, de lungime dată în octeți; citit și scris prin typed arrays sau DataView.Typed arrays (Uint8Array, Float64Array...): Tablouri de lungime fixă cu numere de un singur tip, pentru date binare: imagini, fișiere, audio, rețea.structuredClone: Creează o copie completă (în adâncime) a unei valori: obiecte, tablouri, Date, Map, Set.