SharedArrayBuffer.prototype.slice()
åºçº¿
广æ³å¯ç¨
èª 2021å¹´12æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
SharedArrayBuffer å®ä¾ç slice() æ¹æ³è¿åä¸ä¸ªæ°ç SharedArrayBufferï¼å
¶å
å«å½å SharedArrayBuffer ä» start å¼å§ï¼å
å«ï¼å° end ç»æï¼ä¸å«ï¼çåèå
容ç坿¬ã妿 start æ end ä¸ºè´æ°ï¼åè¡¨ç¤ºä»æ°ç»æ«å°¾å¼å§è®¡æ°çç´¢å¼ï¼å³ä¸ä»å¼å¤´å¼å§çæ¹åç¸åã
å°è¯ä¸ä¸
// Create a SharedArrayBuffer with a size in bytes
const buffer = new SharedArrayBuffer(16);
const int32View = new Int32Array(buffer); // Create the view
// Produces Int32Array [0, 0, 0, 0]
int32View[1] = 42;
const sliced = new Int32Array(buffer.slice(4, 12));
console.log(sliced);
// Expected output: Int32Array [42, 0]
è¯æ³
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ä½ç½®ä¹åï¼åä¸ä¼æåä»»ä½å 容ã
- è´æ°ç´¢å¼å°ä¼ä»ç¼å²åºæ«å°¾å¼å§è®¡ç®ââ妿
è¿åå¼
ä¸ä¸ªæ°ç SharedArrayBufferï¼å
嫿åçå
ç´ ã
示ä¾
>ä½¿ç¨ slice()
js
const sab = new SharedArrayBuffer(1024);
sab.slice(); // SharedArrayBuffer { byteLength: 1024 }
sab.slice(2); // SharedArrayBuffer { byteLength: 1022 }
sab.slice(-2); // SharedArrayBuffer { byteLength: 2 }
sab.slice(0, 1); // SharedArrayBuffer { byteLength: 1 }
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-sharedarraybuffer.prototype.slice> |