Baseline Widely available *
DataView
è§å¾æ¯ä¸ä¸ªå¯ä»¥ä»äºè¿å¶ ArrayBuffer
对象ä¸è¯»åå¤ç§æ°å¼ç±»åçåºå±æ¥å£ï¼ä½¿ç¨å®æ¶ï¼ä¸ç¨èèä¸åå¹³å°çåèåºé®é¢ã
å¤åèçæ°åæ ¼å¼å¨å
åä¸ç表示æ¹å¼å æºå¨æ¶æèå¼ââç¸å
³çè§£é请åé
åèåºãDataView
访é®å¨ï¼accessorï¼æä¾äºå¯¹å¦ä½è®¿é®æ°æ®çæç¡®æ§å¶ï¼èä¸ç®¡æ§è¡ä»£ç çè®¡ç®æºçåèåºå¦ä½ã
const littleEndian = (() => {
const buffer = new ArrayBuffer(2);
new DataView(buffer).setInt16(0, 256, true /* å°ç«¯å¯¹é½ */);
// Int16Array 使ç¨å¹³å°çåèåºã
return new Int16Array(buffer)[0] === 256;
})();
console.log(littleEndian); // true æ false
64 使´æ°å¼
æäºæµè§å¨ä¸æ¯æ DataView.prototype.setBigInt64()
å DataView.prototype.setBigUint64()
ãå æ¤ï¼è¦å¨ä»£ç ä¸å¯ç¨è·¨æµè§å¨ç 64 使ä½ï¼ä½ å¯ä»¥å®ç°èªå·±ç getUint64()
彿°ï¼ä»¥è·å¾ç²¾åº¦è¾¾å° Number.MAX_SAFE_INTEGER
çå¼ââè¿å¯¹äºæäºæ
åµè¶³å¤ä½¿ç¨ã
function getUint64(dataview, byteOffset, littleEndian) {
// å° 64 ä½çæ°åæåä½ä¸¤ä¸ª 32 ä½ï¼4 åèï¼çé¨å
const left = dataview.getUint32(byteOffset, littleEndian);
const right = dataview.getUint32(byteOffset + 4, littleEndian);
// å°ä¸¤ä¸ª 32 ä½çå¼ç»åå¨ä¸èµ·
const combined = littleEndian
? left + 2 ** 32 * right
: 2 ** 32 * left + right;
if (!Number.isSafeInteger(combined))
console.warn(combined, "è¶
è¿ MAX_SAFE_INTEGERãå¯è½åå¨ç²¾åº¦ä¸¢å¤±ã");
return combined;
}
æè
ï¼å¦æä½ éè¦å®æ´ç 64 ä½çèå´ï¼ä½ å¯ä»¥å建 BigInt
ãæ¤å¤ï¼å°½ç®¡åç BigInt æ¯çæçç¨æ·æçåºå¿«å¾å¤ï¼ä½ç±äºå
¶å¤§å°å¯åçæ§è´¨ï¼BigInt å§ç»æ¯ JavaScript ä¸ç 32 使´æ°è¦æ
¢å¾å¤ã
const BigInt = window.BigInt,
bigThirtyTwo = BigInt(32),
bigZero = BigInt(0);
function getUint64BigInt(dataview, byteOffset, littleEndian) {
// å° 64 ä½çæ°åæåä½ä¸¤ä¸ª 32 ä½ï¼4 åèï¼çé¨å
const left = BigInt(dataview.getUint32(byteOffset | 0, !!littleEndian) >>> 0);
const right = BigInt(
dataview.getUint32(((byteOffset | 0) + 4) | 0, !!littleEndian) >>> 0,
);
// å°ä¸¤ä¸ª 32 ä½çå¼ç»åå¨ä¸èµ·å¹¶è¿å该å¼
return littleEndian
? (right << bigThirtyTwo) | left
: (left << bigThirtyTwo) | right;
}
æé 彿°
DataView()
å建ä¸ä¸ªæ°ç DataView
对象ã
DataView.prototype[Symbol.toStringTag]
[Symbol.toStringTag]
屿§çåå§å¼ä¸ºå符串 "DataView"
ãè¯¥å±æ§ç¨äº Object.prototype.toString()
ã
DataView.prototype.buffer
ArrayBuffer
æ¯å¼ç¨è¯¥ç¼å²åºçè§å¾ãå¨æé æ¶ä¼è¢«åºå®ï¼å æ¤è¯¥å±æ§åªè¯»ã
DataView.prototype.byteLength
è§å¾çé¿åº¦ï¼ä»¥åè为åä½ï¼ãå¨æé æ¶ä¼è¢«åºå®ï¼å æ¤è¯¥å±æ§åªè¯»ã
DataView.prototype.byteOffset
è³ ArrayBuffer
çè§å¾å¼å§ä½ç½®çåèåç§»éãå¨æé æ¶ä¼è¢«åºå®ï¼å æ¤è¯¥å±æ§åªè¯»ã
DataView.prototype.getBigInt64()
ä»å½å DataView
çæå®åèåç§»å¤è¯»å 8 个åèï¼å¹¶å°å
¶è§£é为 64 ä½æç¬¦å·æ´æ°ã
DataView.prototype.getBigUint64()
ä»å½å DataView
çæå®åèåç§»å¤è¯»å 8 个åèï¼å¹¶å°å
¶è§£é为 64 使 ç¬¦å·æ´æ°ã
DataView.prototype.getFloat16()
ä»å½å DataView
çæå®åèåç§»å¤è¯»å 2 个åèï¼å¹¶å°å
¶è§£é为 16 使µ®ç¹æ°ã
DataView.prototype.getFloat32()
ä»å½å DataView
çæå®åèåç§»å¤è¯»å 4 个åèï¼å¹¶å°å
¶è§£é为 32 使µ®ç¹æ°ã
DataView.prototype.getFloat64()
ä»å½å DataView
çæå®åèåç§»å¤è¯»å 8 个åèï¼å¹¶å°å
¶è§£é为 64 使µ®ç¹æ°ã
DataView.prototype.getInt16()
ä»å½å DataView
çæå®åèåç§»å¤è¯»å 2 个åèï¼å¹¶å°å
¶è§£é为 16 ä½æç¬¦å·æ´æ°ã
DataView.prototype.getInt32()
ä»å½å DataView
çæå®åèåç§»å¤è¯»å 4 个åèï¼å¹¶å°å
¶è§£é为 32 ä½æç¬¦å·æ´æ°ã
DataView.prototype.getInt8()
ä»å½å DataView
çæå®åèåç§»å¤è¯»å 1 个åèï¼å¹¶å°å
¶è§£é为 8 ä½æç¬¦å·æ´æ°ã
DataView.prototype.getUint16()
ä»å½å DataView
çæå®åèåç§»å¤è¯»å 2 个åèï¼å¹¶å°å
¶è§£é为 16 使 ç¬¦å·æ´æ°ã
DataView.prototype.getUint32()
ä»å½å DataView
çæå®åèåç§»å¤è¯»å 4 个åèï¼å¹¶å°å
¶è§£é为 32 使 ç¬¦å·æ´æ°ã
DataView.prototype.getUint8()
ä»å½å DataView
çæå®åèåç§»å¤è¯»å 1 个åèï¼å¹¶å°å
¶è§£é为 8 使 ç¬¦å·æ´æ°ã
DataView.prototype.setBigInt64()
æå®ä¸ä¸ªæ°åï¼å¹¶å°å
¶ä½ä¸º 64 ä½æç¬¦å·æ´æ°åå¨å¨å½å DataView
çæå®åèåç§»å¤ç 8 个åèä¸ã
DataView.prototype.setBigUint64()
æå®ä¸ä¸ªæ°åï¼å¹¶å°å
¶ä½ä¸º 64 使 ç¬¦å·æ´æ°åå¨å¨å½å DataView
çæå®åèåç§»å¤ç 8 个åèä¸ã
DataView.prototype.setFloat16()
æå®ä¸ä¸ªæ°åï¼å¹¶å°å
¶ä½ä¸º 16 使µ®ç¹æ°åå¨å¨å½å DataView
çæå®åèåç§»å¤ç 2 个åèä¸ã
DataView.prototype.setFloat32()
æå®ä¸ä¸ªæ°åï¼å¹¶å°å
¶ä½ä¸º 32 使µ®ç¹æ°åå¨å¨å½å DataView
çæå®åèåç§»å¤ç 4 个åèä¸ã
DataView.prototype.setFloat64()
æå®ä¸ä¸ªæ°åï¼å¹¶å°å
¶ä½ä¸º 64 使µ®ç¹æ°åå¨å¨å½å DataView
çæå®åèåç§»å¤ç 8 个åèä¸ã
DataView.prototype.setInt16()
æå®ä¸ä¸ªæ°åï¼å¹¶å°å
¶ä½ä¸º 16 ä½æç¬¦å·æ´æ°åå¨å¨å½å DataView
çæå®åèåç§»å¤ç 2 个åèä¸ã
DataView.prototype.setInt32()
æå®ä¸ä¸ªæ°åï¼å¹¶å°å
¶ä½ä¸º 32 ä½æç¬¦å·æ´æ°åå¨å¨å½å DataView
çæå®åèåç§»å¤ç 4 个åèä¸ã
DataView.prototype.setInt8()
æå®ä¸ä¸ªæ°åï¼å¹¶å°å
¶ä½ä¸º 8 ä½æç¬¦å·æ´æ°åå¨å¨å½å DataView
çæå®åèåç§»å¤ç 1 个åèä¸ã
DataView.prototype.setUint16()
æå®ä¸ä¸ªæ°åï¼å¹¶å°å
¶ä½ä¸º 16 使 ç¬¦å·æ´æ°åå¨å¨å½å DataView
çæå®åèåç§»å¤ç 2 个åèä¸ã
DataView.prototype.setUint32()
æå®ä¸ä¸ªæ°åï¼å¹¶å°å
¶ä½ä¸º 32 使 ç¬¦å·æ´æ°åå¨å¨å½å DataView
çæå®åèåç§»å¤ç 4 个åèä¸ã
DataView.prototype.setUint8()
æå®ä¸ä¸ªæ°åï¼å¹¶å°å
¶ä½ä¸º 8 使 ç¬¦å·æ´æ°åå¨å¨å½å DataView
çæå®åèåç§»å¤ç 1 个åèä¸ã
const buffer = new ArrayBuffer(16);
const view = new DataView(buffer, 0);
view.setInt16(1, 42);
view.getInt16(1); // 42
è§è æµè§å¨å
¼å®¹æ§ åè§
DataView
å¨ core-js
ä¸ç polyfillDataView
API è¿è¡äºä¸äºæ©å±ãArrayBuffer
SharedArrayBuffer
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