Baseline Widely available
TypedArray.from()
éææ¹æ³ä»ç±»æ°ç»å¯¹è±¡æå¯è¿ä»£å¯¹è±¡å建ä¸ä¸ªæ°çç±»ååæ°ç»ãæ¤æ¹æ³ä¸ Array.from()
å ä¹ç¸åã
const uint16 = Int16Array.from("12345");
console.log(uint16);
// Expected output: Int16Array [1, 2, 3, 4, 5]
è¯æ³ åæ°
arrayLike
è¦è½¬æ¢ä¸ºç±»ååæ°ç»çå¯è¿ä»£å¯¹è±¡æç±»æ°ç»å¯¹è±¡ã
mapFn
å¯é
对类ååæ°ç»çæ¯ä¸ªå
ç´ è°ç¨ç彿°ã妿æä¾äºè¯¥å½æ°ï¼æ°ç»ä¸è¦æ·»å çæ¯ä¸ªå¼é¦å
ä¼ä¼ éç»è¯¥å½æ°ï¼ç¶åå° mapFn
çè¿å弿·»å å°ç±»ååæ°ç»ä¸ãè¯¥å½æ°ä½¿ç¨ä»¥ä¸åæ°è°ç¨ï¼
element
å½åå¨ç±»ååæ°ç»ä¸å¤ççå ç´ ã
index
å½åå¨ç±»ååæ°ç»ä¸å¤ççå ç´ çç´¢å¼ã
thisArg
å¯é
æ§è¡ mapFn
æ¶ç¨ä½ this
çå¼ã
ä¸ä¸ªæ°ç TypedArray
å®ä¾ã
详æ
请åè§ Array.from()
ã
Array.from()
å TypedArray.from()
ä¹é´åå¨ä¸äºå¾®å¦çåºå«ï¼æ³¨æï¼ä¸é¢æå°ç this
弿¯æè°ç¨ TypedArray.from()
æ¶ç this
å¼ï¼è䏿¯ç¨äºè°ç¨ mapFn
ç thisArg
åæ°ï¼ï¼
TypedArray.from()
ç this
å¼ä¸æ¯æé 彿°ï¼TypedArray.from()
ä¼æåº TypeError
ï¼è Array.from()
é»è®¤ä¼å建ä¸ä¸ªæ°ç Array
ãthis
æé ç对象å¿
é¡»æ¯ä¸ä¸ª TypedArray
å®ä¾ï¼è Array.from()
å
许å
¶ this
弿é 为任ä½å¯¹è±¡ãsource
åæ°æ¯ä¸ä¸ªè¿ä»£å¨æ¶ï¼TypedArray.from()
é¦å
ä»è¿ä»£å¨ä¸æ¶éææå¼ï¼ç¶å使ç¨è®¡æ°å建ä¸ä¸ª this
å®ä¾ï¼æåå°å¼è®¾ç½®å°è¯¥å®ä¾ä¸ãArray.from()
卿¥æ¶å°æ¥èªè¿ä»£å¨çæ¯ä¸ªå¼æ¶è®¾ç½®å
¶å¼ï¼ç¶å卿å设置å
¶ length
ãTypedArray.from()
ä½¿ç¨ [[Set]]
ï¼è Array.from()
ä½¿ç¨ [[DefineOwnProperty]]
ãå æ¤ï¼å¨å¤ç Proxy
对象æ¶ï¼å®è°ç¨ handler.set()
æ¥å建æ°å
ç´ ï¼è䏿¯è°ç¨ handler.defineProperty()
ãArray.from()
æ¥æ¶å°ä¸ä¸ªä¸æ¯è¿ä»£å¨çç±»æ°ç»æ¶ï¼å®ä¼ä¿ç空æ´ãTypedArray.from()
å°ç¡®ä¿ç»ææ¯å¯éçãconst s = new Set([1, 2, 3]);
Uint8Array.from(s);
// Uint8Array [ 1, 2, 3 ]
ä»å符串
Int16Array.from("123");
// Int16Array [ 1, 2, 3 ]
ä¸ç®å¤´å½æ°å map ä¸èµ·ä½¿ç¨
使ç¨ç®å¤´å½æ°ä½ä¸º map 彿°æ¥æä½å ç´
Float32Array.from([1, 2, 3], (x) => x + x);
// Float32Array [ 2, 4, 6 ]
çæä¸ä¸ªæ°ååºå
Uint8Array.from({ length: 5 }, (v, k) => k);
// Uint8Array [ 0, 1, 2, 3, 4 ]
å¨é TypedArray æé 彿°ä¸è°ç¨ from()
from()
ç this
å¼å¿
é¡»æ¯ä¸ä¸ªè¿å TypedArray
å®ä¾çæé 彿°ã
function NotArray(len) {
console.log("è°ç¨ NotArray æ¶çé¿åº¦", len);
}
Int8Array.from.call({}, []); // TypeError: #<Object> is not a constructor
Int8Array.from.call(NotArray, []);
// è°ç¨ NotArray æ¶çé¿åº¦ 0
// TypeError: Method %TypedArray%.from called on incompatible receiver #<NotArray>
function NotArray2(len) {
console.log("è°ç¨ NotArray2 æ¶çé¿åº¦", len);
return new Uint8Array(len);
}
console.log(Int8Array.from.call(NotArray2, [1, 2, 3]));
// è°ç¨ NotArray2 æ¶çé¿åº¦ 3
// Uint8Array(3) [ 1, 2, 3 ]
è§è æµè§å¨å
¼å®¹æ§ åè§
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