ArrayBuffer.prototype.slice()
åºçº¿
广æ³å¯ç¨
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
ArrayBuffer å®ä¾ç slice() æ¹æ³è¿åä¸ä¸ªæ°ç ArrayBuffer å®ä¾ï¼å
¶å
å«å ArrayBuffer å®ä¾ä¸ä» begin å¼å§ï¼å
å«ï¼å° end ç»æï¼ä¸å«ï¼çææåèç坿¬ã
å°è¯ä¸ä¸
// Create an ArrayBuffer with a size in bytes
const buffer = new ArrayBuffer(16);
const int32View = new Int32Array(buffer);
// Produces Int32Array [0, 0, 0, 0]
int32View[1] = 42;
const sliced = new Int32Array(buffer.slice(4, 12));
// Produces Int32Array [42, 0]
console.log(sliced[0]);
// Expected output: 42
è¯æ³
js
slice()
slice(start)
slice(start, end)
åæ°
startå¯é-
è¦å¼å§æåçä½ç½®ç´¢å¼ï¼ä» 0 å¼å§ï¼ï¼å°è¢«è½¬æ¢ä¸ºæ´æ°ã
- è´æ°ç´¢å¼å°ä¼ä»ç¼å²åºæ«å°¾å¼å§è®¡ç®ââ妿
start < 0ï¼é£ä¹å°ä¼ä½¿ç¨start + buffer.lengthã - 妿
start < -buffer.lengthæçç¥äºstartï¼åä¼ä½¿ç¨0ã - 妿
start >= buffer.lengthï¼åä¸ä¼æåä»»ä½å 容ã
- è´æ°ç´¢å¼å°ä¼ä»ç¼å²åºæ«å°¾å¼å§è®¡ç®ââ妿
endå¯é-
è¦ç»ææåçä½ç½®ç´¢å¼ï¼ä» 0 å¼å§ï¼ï¼å°è¢«è½¬æ¢ä¸ºæ´æ°ã
slice()æåå°ä½ä¸å æ¬endã- è´æ°ç´¢å¼å°ä¼ä»ç¼å²åºæ«å°¾å¼å§è®¡ç®ââ妿
end < 0ï¼é£ä¹å°ä¼ä½¿ç¨end + buffer.lengthã - 妿
end < -buffer.lengthï¼åä¼ä½¿ç¨0ã - 妿
end >= buffer.lengthæçç¥äºendï¼åä¼ä½¿ç¨buffer.lengthï¼åä¼å¯¼è´ç´å°æ«å°¾çææå ç´ é½è¢«æåã - 妿æ åååç
endä½ç½®å¨startä½ç½®ä¹åï¼åä¸ä¼æåä»»ä½å 容ã
- è´æ°ç´¢å¼å°ä¼ä»ç¼å²åºæ«å°¾å¼å§è®¡ç®ââ妿
è¿åå¼
ä¸ä¸ªæ°ç ArrayBuffer 对象ã
示ä¾
>å¤å¶ä¸ä¸ª ArrayBuffer
js
const buf1 = new ArrayBuffer(8);
const buf2 = buf1.slice(0);
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-arraybuffer.prototype.slice> |