ArrayBuffer.prototype.transferToFixedLength()
Baseline
2024
Newly available
Since March 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Phương thức transferToFixedLength() của các instance ArrayBuffer tạo một ArrayBuffer không thể thay đổi kích thước mới có cùng nội dung byte như buffer này, sau đó tách buffer này.
Cú pháp
transferToFixedLength()
transferToFixedLength(newByteLength)
Tham số
newByteLength-
byteLengthcủaArrayBuffermới. Mặc định làbyteLengthcủaArrayBuffernày.- Nếu
newByteLengthnhỏ hơnbyteLengthcủaArrayBuffernày, các byte "tràn ra" bị bỏ đi. - Nếu
newByteLengthlớn hơnbyteLengthcủaArrayBuffernày, các byte thêm vào được điền bằng 0.
- Nếu
Giá trị trả về
Một đối tượng ArrayBuffer mới. Nội dung của nó được khởi tạo thành nội dung của ArrayBuffer này, và các byte thêm vào, nếu có, được điền bằng 0. ArrayBuffer mới luôn không thể thay đổi kích thước. ArrayBuffer gốc bị tách ra.
Ngoại lệ
TypeError-
Được ném ra nếu
ArrayBuffernày đã bị tách ra, hoặc nếu nó chỉ có thể bị tách ra bởi các thao tác được chỉ định. Hiện tại, chỉ có một số web API nhất định có khả năng tạo các đối tượngArrayBuffervới các phương thức tách được chỉ định, chẳng hạn nhưGPUBuffer.getMappedRange()vàWebAssembly.Memory.buffer.
Mô tả
Không giống transfer(), transferToFixedLength() luôn tạo ra một ArrayBuffer không thể thay đổi kích thước. Điều này có nghĩa newByteLength có thể lớn hơn maxByteLength, ngay cả khi ArrayBuffer này có thể thay đổi kích thước. Xem chuyển ArrayBuffer để biết thêm thông tin.
Ví dụ
>Chuyển một ArrayBuffer có thể thay đổi kích thước sang độ dài cố định
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
Sử dụng transferToFixedLength, newByteLength có thể lớn hơn maxByteLength của ArrayBuffer gốc.
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
Đặc tả kỹ thuật
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-arraybuffer.prototype.transfertofixedlength> |