JavaScript ç±»ååæ°ç»æ¯ä¸ç§ç±»ä¼¼æ°ç»ç对象ï¼å¹¶æä¾äºä¸ç§ç¨äºå¨å åç¼å²ä¸è®¿é®åå§äºè¿å¶æ°æ®çæºå¶ã
å¼å ¥ç±»ååæ°ç»å¹¶éæ¯ä¸ºäºå代 JavaScript 䏿°ç»çä»»ä½ä¸ç§åè½ãç¸åï¼å®ä¸ºå¼åè æä¾äºä¸ä¸ªæä½äºè¿å¶æ°æ®çæ¥å£ãè¿å¨æä½ä¸å¹³å°ç¸å ³çç¹æ§æ¶ä¼å¾æç¨ï¼ä¾å¦ï¼é³é¢è§é¢ç¼è¾åè®¿é® WebSocket åå§æ°æ®çãJavaScript ç±»ååæ°ç»ä¸çæ¯ä¸ä¸ªå ç´ é½æ¯ä»¥æç§æ ¼å¼è¡¨ç¤ºçåå§äºè¿å¶å¼ï¼JavaScript æ¯æä» 8 使´æ°å° 64 使µ®ç¹æ°çå¤ç§äºè¿å¶æ ¼å¼ã
ç±»ååæ°ç»æ¥æè®¸å¤ä¸æ°ç»ç¸åçæ¹æ³ï¼è¯ä¹ä¹ç¸ä¼¼ã使¯ï¼ç±»ååæ°ç»å¹¶ä¸æ¯æ®éæ°ç»ï¼å 为å¨ç±»ååæ°ç»ä¸è°ç¨ Array.isArray()
ä¼è¿å false
ãæ¤å¤ï¼å¹¶ä¸æ¯ææå¯ç¨äºæ®éæ°ç»çæ¹æ³é½è½è¢«ç±»ååæ°ç»ææ¯æï¼å¦ push å popï¼ã
ä¸ºäºæå¤§ç¨åº¦ççµæ´»æ§åæçï¼JavaScript å°ç±»ååæ°ç»çå®ç°æå为ç¼å²åè§å¾ä¸¤é¨åãç¼å²æ¯ä¸ç§è¡¨ç¤ºäºæ°æ®åç对象ï¼å®æ²¡ææ ¼å¼å¯è¨ï¼ä¹æ²¡ææä¾è®¿é®å ¶å å®¹çæºå¶ã为äºè®¿é®ç¼å²ä¸çå åï¼ä½ éè¦ä½¿ç¨è§å¾ãè§å¾æä¾äºä¸ä¸æââ峿°æ®ç±»åãèµ·å§åç§»éåå ç´ æ°éã
ç¼å²æä¸¤ç§ç±»åçç¼å²ï¼ArrayBuffer
å SharedArrayBuffer
ãå®ä»¬é½æ¯å
ååçä½çº§è¡¨ç¤ºãå®ä»¬ååä¸é½å«æâarrayâï¼ä½æ¯å®ä»¬ä¸æ°ç»å¹¶æ²¡æå¤ªå¤å
³ç³»ââä½ ä¸è½ç´æ¥è¯»åå®ä»¬ãç¸åï¼ç¼å²æ¯éç¨ç对象ï¼å®ä»¬åªå
å«åå§æ°æ®ã为äºè®¿é®ç¼å²æè¡¨ç¤ºçå
åï¼ä½ éè¦ä½¿ç¨è§å¾ã
ç¼å²æ¯æä»¥ä¸æä½ï¼
0
ãslice()
æ¹æ³ï¼ä½ å¯ä»¥é«æå°å¤å¶ç¼å²ä¸çä¸é¨åæ°æ®ï¼èä¸éè¦å建è§å¾æ¥æå¨å¤å¶æ¯ä¸ä¸ªåèãtransfer()
å transferToFixedLength()
æ¹æ³ï¼å¯ä»¥å°å
ååçæææè½¬ç§»ç»ä¸ä¸ªæ°çç¼å²å¯¹è±¡ãè¥ä½ æ³è¦å¨ä¸åçæ§è¡ä¸ä¸æé´è½¬ç§»æ°æ®ï¼å䏿³å¤å¶ï¼è¿äºæ¹æ³å°±å¾æç¨ã转移åï¼åå§ç¼å²å°ä¸åå¯ç¨ãSharedArrayBuffer
ä¸è½è¢«è½¬ç§»ï¼å 为ç¼å²å·²ç»è¢«æææ§è¡ä¸ä¸æå
±äº«ï¼ãresize()
æ¹æ³ï¼å¯ä»¥è°æ´å
ååç大å°ï¼åªè¦ä¸è¶
è¿é¢è®¾ç maxByteLength
éå¶ï¼ãSharedArrayBuffer
åªè½å¢é¿ï¼ä¸è½ç¼©å°ãArrayBuffer
ä¸ SharedArrayBuffer
ä¹é´çåºå«æ¯ï¼åè
å¨å䏿¶å»åªè½æå±äºå个æ§è¡ä¸ä¸æãå¦æä½ å° ArrayBuffer
ä¼ éç»å¦ä¸ä¸ªæ§è¡ä¸ä¸æï¼å®ä¼è¢«è½¬ç§»ï¼åå§ç ArrayBuffer
å°ä¸åå¯ç¨ãè¿ç¡®ä¿äºå䏿¶å»åªæä¸ä¸ªæ§è¡ä¸ä¸æå¯ä»¥è®¿é®å
åãSharedArrayBuffer
å¨ä¼ éç»å¦ä¸ä¸ªæ§è¡ä¸ä¸ææ¶ä¸ä¼è¢«è½¬ç§»ï¼å æ¤å¯ä»¥è¢«å¤ä¸ªæ§è¡ä¸ä¸æåæ¶è®¿é®ãå½å¤ä¸ªçº¿ç¨åæ¶è®¿é®åä¸å
ååæ¶ï¼å¯è½ä¼åºç°ç«äºæ¡ä»¶ï¼è¿æ¶å Atomics
æ¹æ³å°±å¾æç¨äºã
ç®åä¸»è¦æä¸¤ç§è§å¾ï¼ç±»ååæ°ç»è§å¾å DataView
ãç±»ååæ°ç»æä¾äºå®ç¨æ¹æ³ï¼å¯ä»¥æ¹ä¾¿å°è½¬æ¢äºè¿å¶æ°æ®ãDataView
æ´åºå±ï¼å¯ä»¥ç²¾ç¡®æ§å¶æ°æ®çè®¿é®æ¹å¼ã使ç¨è¿ä¸¤ç§è§å¾è¯»åæ°æ®çæ¹å¼æ¯é常ä¸åçã
两ç§è§å¾é½ä¼ä½¿ ArrayBuffer.isView()
è¿å true
ãå®ä»¬é½æä»¥ä¸å±æ§ï¼
buffer
è§å¾æå¼ç¨çåºå±ç¼å²ã
byteOffset
è§å¾ç¸å¯¹äºç¼å²èµ·å§ä½ç½®çåç§»éï¼ä»¥åè为åä½ï¼ã
byteLength
è§å¾çé¿åº¦ï¼ä»¥åè为åä½ï¼ã
两è
çæé 彿°é½æ¥åä¸è¿°ä¸ä¸ªå离çåæ°ãç±»ååæ°ç»æé 彿°è¿æ¥å length
ä½ä¸ºå
ç´ æ°éï¼è䏿¯åèé¿åº¦ã
ç±»ååæ°ç»è§å¾æèªæè¿°çåç§°ï¼å¹¶ä¸æä¾äºææå¸¸è§æ°å¼ç±»åçè§å¾ï¼å¦ Int8
ãUint32
å Float64
ççãè¿æä¸ç§ç¹æ®çç±»ååæ°ç»è§å¾ï¼Uint8ClampedArray
ï¼å®ä¼å°å¼é³å¶ï¼clampï¼å° 0
å° 255
ä¹é´ï¼è¿å¨ Canvas æ°æ®å¤ççåºæ¯ä¸å¾æç¨ã
Int8Array
-128~127 1 8 ä½æç¬¦å·æ´æ°ï¼è¡¥ç ï¼ byte
int8_t
Uint8Array
0~255 1 8 使 ç¬¦å·æ´æ° octet
uint8_t
Uint8ClampedArray
0~255 1 8 使 ç¬¦å·æ´æ°ï¼å¼ä¼è¢«è£åªï¼ octet
uint8_t
Int16Array
-32768~32767 2 16 ä½æç¬¦å·æ´æ°ï¼è¡¥ç ï¼ short
int16_t
Uint16Array
0~65535 2 16 使 ç¬¦å·æ´æ° unsigned short
uint16_t
Int32Array
-2147483648~2147483647 4 32 ä½æç¬¦å·æ´æ°ï¼è¡¥ç ï¼ long
int32_t
Uint32Array
0~4294967295 4 32 使 ç¬¦å·æ´æ° unsigned long
uint32_t
Float32Array
-3.4E38
~3.4E38
以å 1.2E-38
ï¼æå°æ£æ°ï¼ 4 32 ä½ IEEE æµ®ç¹æ°ï¼7 ä½æææ°åï¼ä¾å¦ 1.123456
ï¼ unrestricted float
float
Float64Array
-1.8E308
~1.8E308
以å 5E-324
ï¼æå°æ£æ°ï¼ 8 64 ä½ IEEE æµ®ç¹æ°ï¼16 ä½æææ°åï¼ä¾å¦ 1.123...15
ï¼ unrestricted double
double
BigInt64Array
-263~263 - 1 8 64 ä½æç¬¦å·æ´æ°ï¼è¡¥ç ï¼ bigint
int64_t (signed long long)
BigUint64Array
0~264 - 1 8 64 使 ç¬¦å·æ´æ° bigint
uint64_t (unsigned long long)
ææç±»ååæ°ç»ç±»å齿ç¸åçæ¹æ³ä¸å±æ§ï¼è¿äºæ¹æ³ä¸å±æ§ç± TypedArray
ç±»å®ä¹ãå®ä»¬çå¯ä¸åºå«å¨äºåºå±æ°æ®ç±»åååèæ°çä¸åãè¿å¨å¼ç¼ç 䏿 ååä¸æè¯¦ç»è®¨è®ºã
ç±»ååæ°ç»åå䏿¯åºå®é¿åº¦çï¼å æ¤å¹¶ä¸åå¨å¯ä»¥æ¹åæ°ç»é¿åº¦çæ¹æ³ï¼å¦ pop
ãpush
ãshift
ãsplice
å unshift
ãæ¤å¤ï¼flat
ä¹ä¸å¯ç¨ï¼å 为类ååæ°ç»æ æ³åµå¥ï¼concat
å flatMap
忝ç±äºåºç¨åºæ¯ä¸å¤§ï¼äº¦ä¸å¯ç¨ãç±äº splice
ä¸å¯ç¨ï¼å æ¤ toSpliced
ä¹ä¸å¯ç¨ãææå
¶ä»æ°ç»æ¹æ³é½æ¯ Array
å TypedArray
å
±äº«çã
å¦ä¸æ¹é¢ï¼ç±»ååæ°ç»æé¢å¤ç set
å subarray
æ¹æ³ï¼å¯ä»¥ç¨æ¥ä¼åâåç¼å²å¤è§å¾âçåºæ¯ãset()
æ¹æ³å
è®¸ä½ ä½¿ç¨ä¸ä¸ªæ°ç»æç±»ååæ°ç»çæ°æ®ï¼æ¥å¯¹å¦ä¸ä¸ªç±»ååæ°ç»çå¤ä¸ªç´¢å¼åæ¶è¿è¡è®¾ç½®ãå¦æä¸¤ä¸ªç±»ååæ°ç»å
±äº«åä¸ä¸ªåºå±ç¼å²ï¼é£ä¹è¿ä¸ªæä½å¯è½ä¼æ´å 髿ï¼å ä¸ºè¿æ¯ä¸ä¸ªå¿«éçå
åç§»å¨ãsubarray()
æ¹æ³å建ä¸ä¸ªæ°çç±»ååæ°ç»è§å¾ï¼å®å¼ç¨ä¸åå§ç±»ååæ°ç»ç¸åçç¼å²ï¼ä½æ¯èå´æ´çªã
å¨ä¸æ¹ååºå±ç¼å²çåæä¸ï¼æ æ³ç´æ¥æ¹åç±»ååæ°ç»çé¿åº¦ã使¯ï¼å½ç±»ååæ°ç»çåºå±æ¯å¯è°æ´å¤§å°çç¼å²ï¼ä¸æ²¡æåºå®ç byteLength
æ¶ï¼å®å°±ä¼è·è¸ªé¿åº¦ï¼å³å®çé¿åº¦ä¼éçç¼å²ç大å°èèªå¨è°æ´ã详æ
请åé
åºå±ä¸ºå¯å大å°ç¼å²æ¶çè¡ä¸ºã
ç±»ä¼¼äºæ®éæ°ç»ï¼ä½ å¯ä»¥ä½¿ç¨æ¹æ¬å·è¡¨ç¤ºæ³æ¥è®¿é®ç±»ååæ°ç»çå ç´ ãåºå±ç¼å²ä¸å¯¹åºçåèä¼è¢«è§£æä¸ºä¸ä¸ªæ°åãä»»ä½ä½¿ç¨æ°åï¼ææ°åçå符串表示ï¼å 为æ°åæ»æ¯å¨è®¿é®å±æ§æ¶è¢«è½¬æ¢ä¸ºå符串ï¼ç屿§è®¿é®é½ä¼è¢«ç±»ååæ°ç»ä»£çââå®ä»¬æ°¸è¿ä¸ä¼ä¸å¯¹è±¡æ¬èº«äº¤äºãè¿æå³çï¼ä¾å¦ï¼
undefined
ï¼èä¸ä¼å®é
访é®å¯¹è±¡ä¸ç屿§ãconst uint8 = new Uint8Array([1, 2, 3]);
console.log(uint8[0]); // 1
// ä»
ç¨ä½ç¤ºä¾ãä¸è¦å¨ç产代ç ä¸ä½¿ç¨ã
uint8[-1] = 0;
uint8[2.5] = 0;
uint8[NaN] = 0;
console.log(Object.keys(uint8)); // ["0", "1", "2"]
console.log(uint8[NaN]); // undefined
// éæ°å访é®ä»ç¶ææ
uint8[true] = 0;
console.log(uint8[true]); // 0
Object.freeze(uint8); // TypeErrorï¼æ æ³å»ç»é空ç¼å²çè§å¾
DataView
DataView
æ¯ä¸ç§åºå±æ¥å£ï¼å®æä¾å¯ä»¥æä½ç¼å²ä¸ä»»ææ°æ®ç getter/setter APIãè¿å¯¹æä½ä¸åç±»åæ°æ®çåºæ¯å¾æå¸®å©ï¼ä¾å¦ï¼ç±»ååæ°ç»è§å¾é½æ¯è¿è¡å¨æ¬å°åèåºæ¨¡å¼ï¼åèåèåºï¼ï¼å¯ä»¥éè¿ä½¿ç¨ DataView
æ¥æ§å¶åèåºãé»è®¤æ¯å¤§ç«¯åèåºï¼big-endianï¼ï¼ä½å¯ä»¥è°ç¨ getter/setter æ¹æ³æ¹ä¸ºå°ç«¯åèåºï¼little-endianï¼ã
DataView
ä¸éè¦å¯¹é½ï¼å¤åè读åå¯ä»¥ä»ä»»ææå®çåç§»éå¼å§ãsetter æ¹æ³ä¹æ¯å¦æ¤ã
ä¸é¢çä¾åä½¿ç¨ DataView
æ¥è·åä»»ææ°åçäºè¿å¶è¡¨ç¤ºï¼
function toBinary(
x,
{ type = "Float64", littleEndian = false, separator = " ", radix = 16 } = {},
) {
const bytesNeeded = globalThis[`${type}Array`].BYTES_PER_ELEMENT;
const dv = new DataView(new ArrayBuffer(bytesNeeded));
dv[`set${type}`](0, x, littleEndian);
const bytes = Array.from({ length: bytesNeeded }, (_, i) =>
dv
.getUint8(i)
.toString(radix)
.padStart(8 / Math.log2(radix), "0"),
);
return bytes.join(separator);
}
console.log(toBinary(1.1)); // 3f f1 99 99 99 99 99 9a
console.log(toBinary(1.1, { littleEndian: true })); // 9a 99 99 99 99 99 f1 3f
console.log(toBinary(20, { type: "Int8", radix: 2 })); // 00010100
使ç¨ç±»ååæ°ç»ç Web API
ä¸é¢æ¯ä¸äºä½¿ç¨ç±»ååæ°ç»ç API 示ä¾ï¼å ¶å¹¶ä¸å®æ´ï¼æä»¬ä¼å¨æªæ¥æ·»å æ´å¤ç¤ºä¾ã
FileReader.prototype.readAsArrayBuffer()
FileReader.prototype.readAsArrayBuffer()
读å对åºç Blob
æ File
çå
容
XMLHttpRequest.prototype.send()
XMLHttpRequest
å®ä¾ç send()
æ¹æ³ç°å¨æ¯æä½¿ç¨ç±»ååæ°ç»å ArrayBuffer
对象ä½ä¸ºåæ°ã
ImageData.data
æ¯ä¸ä¸ª Uint8ClampedArray
对象ï¼ç¨æ¥æè¿°å
嫿ç
§ RGBA åºåçé¢è²æ°æ®çä¸ç»´æ°ç»ï¼å
¶å¼çèå´å¨ 0
å° 255
ä¹é´ã
é¦å ï¼æä»¬éè¦å建ä¸ä¸ª 16 åèåºå®é¿åº¦çç¼å²ï¼
const buffer = new ArrayBuffer(16);
ç°å¨æä»¬æäºä¸æ®µåå§å为 0 çå åï¼ç®åè¿åä¸äºä»ä¹å¤ªå¤æä½ã让æä»¬ç¡®è®¤ä¸ä¸æ°æ®çåèé¿åº¦ï¼
if (buffer.byteLength === 16) {
console.log("æ¯ 16 åèã");
} else {
console.log("大尿é®é¢ï¼");
}
å¨å®é å¼å§æä½è¿ä¸ªç¼å²ä¹åï¼è¿éè¦ä¸ä¸ªè§å¾ãç°å¨ï¼æä»¬å°±å建ä¸ä¸ªè§å¾ï¼è¯¥è§å¾å°æç¼å²å çæ°æ®è§ä¸ºä¸ä¸ª 32 ä½æç¬¦å·æ´æ°æ°ç»ï¼
const int32View = new Int32Array(buffer);
ç°å¨æä»¬å¯ä»¥åæ®éæ°ç»ä¸æ ·è®¿é®è¯¥æ°ç»ä¸çå ç´ ï¼
for (let i = 0; i < int32View.length; i++) {
int32View[i] = i * 2;
}
该代ç ä¼å°æ°ç»ä»¥ 0
ã2
ã4
å 6
å¡«å
ï¼ä¸å
± 4 个 4 åèå
ç´ ï¼æä»¥æ»é¿åº¦ä¸º 16 åèï¼ã
æ´æææçæ¯ï¼ä½ å¯ä»¥å¨å䏿°æ®ä¸å建å¤ä¸ªè§å¾ãä¾å¦ï¼åºäºä¸æç代ç ï¼æä»¬å¯ä»¥åè¿æ ·ç»§ç»æä½ï¼
const int16View = new Int16Array(buffer);
for (let i = 0; i < int16View.length; i++) {
console.log(`ç´¢å¼ ${i}ï¼${int16View[i]}`);
}
è¿éæä»¬å建äºä¸ä¸ª 16 使´æ°è§å¾ï¼è¯¥è§å¾å
±äº«ä¸æç 32 使´æ°è§å¾çç¼å²ï¼ç¶å以 16 使´æ°æå°åºç¼å²éçæ°æ®ï¼è¿æ¬¡æä»¬ä¼å¾å° 0
ã0
ã2
ã0
ã4
ã0
ã6
ã0
è¿æ ·çè¾åºï¼å设æ¯å°ç«¯åºç¼ç ï¼ã
Int16Array | 0 | 0 | 2 | 0 | 4 | 0 | 6 | 0 | Int32Array | 0 | 2 | 4 | 6 | ArrayBuffer | 00 00 00 00 | 02 00 00 00 | 04 00 00 00 | 06 00 00 00 |
è¿ä¸æ¥å°ï¼
int16View[0] = 32;
console.log(`32 使°ç»çç´¢å¼ 0 夿°æ®æ¯ï¼${int32View[0]}`);
è¿æ¬¡çè¾åºæ¯ "32 使°ç»çç´¢å¼ 0 夿°æ®æ¯ï¼32"
ãä¹å°±æ¯ï¼è¿ 2 个æ°ç»é½æ¯å䏿°æ®ç以ä¸åæ ¼å¼å±ç¤ºåºæ¥çè§å¾ã
Int16Array | 32 | 0 | 2 | 0 | 4 | 0 | 6 | 0 | Int32Array | 32 | 2 | 4 | 6 | ArrayBuffer | 20 00 00 00 | 02 00 00 00 | 04 00 00 00 | 06 00 00 00 |
ä½ å¯ä»¥å¯¹ä»»æè§å¾ç±»åè¿è¡è¿æ ·çæä½ï¼å°½ç®¡å¦æä½ 设置ä¸ä¸ªæ´æ°ï¼ç¶åä»¥æµ®ç¹æ°çå½¢å¼è¯»åå®ï¼ä½ å¯è½ä¼å¾å°ä¸ä¸ªå¥æªçç»æï¼å 为ä½çè§£éæ¹å¼ä¸åã
const float32View = new Float32Array(buffer);
console.log(float32View[0]); // 4.484155085839415e-44
ä»ç¼å²è¯»åææ¬
ç¼å²å¹¶ä¸æ»æ¯è¡¨ç¤ºæ°åãä¾å¦ï¼è¯»åæä»¶å¯ä»¥ç»ä½ ä¸ä¸ªææ¬æ°æ®ç¼å²ãä½ å¯ä»¥ä½¿ç¨ç±»ååæ°ç»ä»ç¼å²ä¸è¯»åè¿äºæ°æ®ã
ä¸é¢ç代ç ä½¿ç¨ TextDecoder
web API 读å UTF-8 ææ¬ï¼
const buffer = new ArrayBuffer(8);
const uint8 = new Uint8Array(buffer);
// æä»¬æå¨åå
¥æ°æ®ï¼åè£
å®å·²ç»å¨ç¼å²åºä¸äº
uint8.set([228, 189, 160, 229, 165, 189]);
const text = new TextDecoder().decode(uint8);
console.log(text); // "ä½ å¥½"
ä¸é¢ç代ç ä½¿ç¨ String.fromCharCode()
æ¹æ³è¯»å UTF-16 ææ¬ï¼
const buffer = new ArrayBuffer(8);
const uint16 = new Uint16Array(buffer);
// æä»¬æå¨åå
¥æ°æ®ï¼åè£
å®å·²ç»å¨ç¼å²åºä¸äº
uint16.set([0x4f60, 0x597d]);
const text = String.fromCharCode(...uint16);
console.log(text); // "ä½ å¥½"
使ç¨å¤æçæ°æ®ç»æ
éè¿å°ç¼å²ä¸ä¸åç±»åè§å¾ç»åï¼ä»¥åä¿®æ¹å å访é®çåç§»éï¼ä½ å¯ä»¥æä½å 嫿´å¤æ´å¤ææ°æ®ç»æçæ°æ®ãä¾å¦ï¼ä½ å¯ä»¥æä½è¯¸å¦ WebGL ææ°æ®æä»¶è¿äºå¤æçæ°æ®ç»æã
请çå¦ä¸ç C è¯è¨ç»æä½ï¼
struct someStruct {
unsigned long id;
char username[16];
float amountDue;
};
ä½ å¯ä»¥éç¨å¦ä¸ä»£ç 访é®ä¸ä¸ªå 嫿¤ç±»ç»æä½çç¼å²ï¼
const buffer = new ArrayBuffer(24);
// â¦å°æ°æ®è¯»å
¥ç¼å²â¦
const idView = new Uint32Array(buffer, 0, 1);
const usernameView = new Uint8Array(buffer, 4, 16);
const amountDueView = new Float32Array(buffer, 20, 1);
è¿æ ·ä¸æ¥ï¼ä½ å°±å¾å°äºä¸ä¸ªç±»ä¼¼çæ°æ®ç»æï¼ä¾å¦ï¼amountDueView[0]
对åºäº C ç amountDue
åæ®µã
转æ¢ä¸ºæ®éæ°ç»å¤æ³¨ï¼C è¯è¨ç»æä½çæ°æ®å¯¹é½ä¸å¹³å°ç¸å ³ãå æ¤éè¦é²èåèèä¸åå¹³å°åèå¡«å 对é½çå·®å¼ã
å¨å¤çå®ä¸ä¸ªç±»ååæ°ç»åï¼ææ¶éè¦æå®è½¬ä¸ºæ®éæ°ç»ï¼ä»¥ä¾¿å¯ä»¥ä» Array
ååä¸åçãå¯ä»¥éè¿ä½¿ç¨ Array.from()
å®ç°ï¼
const typedArray = new Uint8Array([1, 2, 3, 4]);
const normalArray = Array.from(typedArray);
ä¹å¯ä»¥ä½¿ç¨å±å¼è¯æ³ã
const typedArray = new Uint8Array([1, 2, 3, 4]);
const normalArray = [...typedArray];
åè§
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4