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.
ArrayBuffer
인스턴스의 transferToFixedLength()
메서드는 이 버퍼의 내용과 동일한 바이트의 크기 조절이 불가능한 ArrayBuffer
를 새로 생성하고 이 버퍼를 분리합니다.
구문
transferToFixedLength()
transferToFixedLength(newByteLength)
매개변수
newByteLength
-
새
ArrayBuffer
의byteLength
입니다. 기본값은 이ArrayBuffer
의byteLength
입니다.newByteLength
가 이ArrayBuffer
의byteLength
보다 작으면 해당 버퍼에 담지못해 넘치는 바이트는 삭제됩니다.newByteLength
가 이ArrayBuffer
의byteLength
보다 크다면 남는 바이트는 0으로 채워집니다.
반환 값
새로운 ArrayBuffer
객체. 해당 객체의 내용은 이 ArrayBuffer
의 내용으로 초기화되며, 여분의 바이트가 있다면 0으로 채워집니다. 새로운 ArrayBuffer
는 언제나 크기 조절이 불가능합니다. 원본 ArrayBuffer
는 분리됩니다.
예외
TypeError
-
이
ArrayBuffer
가 이미 분리되었다면 발생합니다.
설명
transfer()
와 달리, transferToFixedLength()
는 항상 크기 조정이 불가능한 ArrayBuffer
를 생성합니다. 즉, 이 ArrayBuffer
가 크기 조정이 가능하더라도 newByteLength
가 maxByteLength
보다 클 수 있습니다. 자세한 내용은 ArrayBuffer 전송하기를 참조하세요.
예제
고정 길이 버퍼에 크기 조정 가능한 ArrayBuffer 전송하기
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
는 원본 ArrayBuffer
의 maxByteLength
보다 클 수 있습니다.
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
명세서
Specification |
---|
ECMAScript Language Specification # sec-arraybuffer.prototype.transfertofixedlength |
브라우저 호환성
BCD tables only load in the browser