DataView
Baseline
åºãå©ç¨å¯è½
*
ãã®æ©è½ã¯åºãå®è£ ããã¦ãããå¤ãã®ãã¼ã¸ã§ã³ã®ç«¯æ«ããã©ã¦ã¶ã¼ã§åä½ãã¾ãã2015å¹´7æä»¥éããã¹ã¦ã®ãã©ã¦ã¶ã¼ã§å©ç¨å¯è½ã§ãã
* ãã®æ©è½ã®ä¸é¨ã¯ã対å¿ã¬ãã«ãç°ãªãå ´åãããã¾ãã
DataView ãã¥ã¼ã¯ããã¤ããªã¼ã® ArrayBuffer å
ã®è¤æ°ã®æ°å¤åãããã©ãããã©ã¼ã ã®ã¨ã³ãã£ã¢ã³ãæèãããã¨ãªãèªã¿æ¸ãããããã®ä½æ°´æºã¤ã³ã¿ã¼ãã§ã¤ã¹ãæä¾ãã¾ãã
解説
>ã¨ã³ãã£ã¢ã³
å¤ãã¤ãã®æ°å¤å½¢å¼ã¯ããã·ã³ã¢ã¼ããã¯ãã£ã«ãã£ã¦ã¡ã¢ãªã¼å
ã§ã®è¡¨ç¾ãç°ãªãã¾ãã説æã¯ã¨ã³ãã£ã¢ã³ãåç
§ãã¦ãã ãããDataView ã®ã¢ã¯ã»ãµã¼ã¯ãå®è¡ä¸ã®ã³ã³ãã¥ã¼ã¿ã¼ã®ã¨ã³ãã£ã¢ã³ã«é¢ãããããã¼ã¿ã¸ã®ã¢ã¯ã»ã¹æ¹æ³ãæç¤ºçã«å¶å¾¡ãã¾ããä¾ãã°ãWebAssembly ã®ã¡ã¢ãªã¼ã¯å¸¸ã«ãªãã«ã¨ã³ãã£ã¢ã³ã§ããããããã«ããã¤ãå¤ã®èªã¿æ¸ãã«ã¯åä»ãé
åã§ã¯ãªã DataView ã使ç¨ãã¹ãã§ããä¾ã«ã¤ãã¦ã¯ãWebAssembly.Memory ãåç
§ãã¦ãã ããã
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
ã¡ã¢:
DataView ã¯ããã©ã«ãã§ããã°ã¨ã³ãã£ã¢ã³ã§èªã¿æ¸ããã¾ãããã»ã¨ãã©ã®ãã©ãããã©ã¼ã ã¯ãªãã«ã¨ã³ãã£ã¢ã³ã使ç¨ãã¦ãã¾ãã
ã³ã³ã¹ãã©ã¯ã¿ã¼
DataView()-
æ°ãã
DataViewãªãã¸ã§ã¯ãã使ãã¾ãã
ã¤ã³ã¹ã¿ã³ã¹ããããã£
ãããã®ããããã£ã¯ DataView.prototype ä¸ã«å®ç¾©ããã¦ããããã¹ã¦ã® DataView ã¤ã³ã¹ã¿ã³ã¹ã§å
±æããã¾ãã
DataView.prototype.buffer-
ãã®
DataViewã«ãã£ã¦åç §ãããArrayBufferãè¿ãã¾ãã DataView.prototype.byteLength-
ãã®
DataViewã®é·ããï¼ãã¤ãåä½ã§ï¼è¿ãã¾ãã DataView.prototype.byteOffset-
ArrayBufferã®éå§ä½ç½®ãããã®DataViewã¾ã§ã®ãªãã»ãããï¼ãã¤ãåä½ã§ï¼è¿ãã¾ãã DataView.prototype.constructor-
ã¤ã³ã¹ã¿ã³ã¹ãªãã¸ã§ã¯ãã使ããã³ã³ã¹ãã©ã¯ã¿ã¼é¢æ°ã§ãã
DataViewã¤ã³ã¹ã¿ã³ã¹ã®å ´åãåæå¤ã¯DataViewã³ã³ã¹ãã©ã¯ã¿ã¼ã§ãã DataView.prototype[Symbol.toStringTag]-
[Symbol.toStringTag]ããããã£ã®åæå¤ã¯æåå"DataView"ã§ãããã®ããããã£ã¯Object.prototype.toString()ã§ä½¿ç¨ããã¦ãã¾ãã
ã¤ã³ã¹ã¿ã³ã¹ã¡ã½ãã
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 ãã¤ãã«æ ¼ç´ãã¾ãã
ä¾
>DataView ã®ä½¿ç¨
const buffer = new ArrayBuffer(16);
const view = new DataView(buffer, 0);
view.setInt16(1, 42);
view.getInt16(1); // 42
仿§æ¸
| 仿§æ¸ |
|---|
| ECMAScript® 2027 Language Specification > # sec-dataview-objects > |