ArrayBuffer.prototype.transferToFixedLength()
åºçº¿
2024
æè¿å¯ç¨
èª March 2024 èµ·ï¼æ¤ç¹æ§å·²å¨ææ°æµè§å¨ä¸å¾å°æ¯æãä½å¨è¾æ§çè®¾å¤ææµè§å¨ä¸å¯è½æ æ³è¿è¡ã
å®éªæ§: è¿æ¯ä¸é¡¹å®éªæ§ææ¯
å¨å°å
¶ç¨äºç产ä¹åï¼è¯·ä»ç»æ£æ¥æµè§å¨å
¼å®¹æ§è¡¨æ ¼ã
ArrayBuffer å®ä¾ç transferToFixedLength() æ¹æ³å建ä¸ä¸ªä¸å¯è°æ´å¤§å°çæ° ArrayBuffer 对象ï¼è¯¥å¯¹è±¡ä¸æ¤ç¼å²åºå
·æç¸åçåèå
容ï¼ç¶åå°æ¤ç¼å²åºå离ã
è¯æ³
transferToFixedLength()
transferToFixedLength(newByteLength)
åæ°
newByteLength-
æ°ç
ArrayBufferçbyteLengthãé»è®¤ä¸ºæ¤ArrayBufferçbyteLengthã- 妿
newByteLengthå°äºæ¤ArrayBufferçbyteLengthï¼åâæº¢åºçâåèå°è¢«ä¸¢å¼ã - 妿
newByteLengthå¤§äºæ¤ArrayBufferçmaxByteLengthï¼åå¤ä½çåèç¨é¶å¡«å ã
- 妿
è¿åå¼
ä¸ä¸ªæ°ç ArrayBuffer 对象ãå®çå
容被åå§åä¸ºæ¤ ArrayBuffer çå
容ï¼å¦ææå¤ä½çåèï¼åç¨é¶å¡«å
ãæ°ç ArrayBuffer æ»æ¯ä¸å¯è°æ´å¤§å°çãåå§ ArrayBuffer 被å离ã
å¼å¸¸
TypeError-
妿æ¤
ArrayBufferå·²ç»å离ï¼åæåºè¯¥é误ã
æè¿°
å transfer() ä¸åï¼transferToFixedLength() æ»æ¯å建ä¸ä¸ªä¸å¯è°æ´å¤§å°ç ArrayBufferãè¿æå³ç newByteLength å¯ä»¥æ¯ maxByteLength 大ï¼å³ä½¿æ¤ ArrayBuffer æ¯å¯è°æ´å¤§å°çãæå
³æ´å¤ä¿¡æ¯ï¼è¯·åé
ä¼ è¾ 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
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-arraybuffer.prototype.transfertofixedlength> |