ArrayBuffer
、型付き配列、DataView
«ElementType»Array.from()
new ArrayBuffer()
ArrayBuffer
の静的メソッドArrayBuffer.prototype
のプロパティTypedArray<T>
の静的メソッドTypedArray<T>.prototype
のプロパティnew «ElementType»Array()
«ElementType»Array
の静的プロパティ«ElementType»Array.prototype
のプロパティnew DataView()
DataView.prototype
のプロパティWeb上の多くのデータはテキストです。JSONファイル、HTMLファイル、CSSファイル、JavaScriptコードなどです。JavaScriptは、組み込みの文字列を介してそのようなデータをうまく処理します。
しかし、2011年以前は、バイナリデータをうまく処理できませんでした。Typed Array Specification 1.0は2011年2月8日に導入され、バイナリデータを扱うためのツールを提供しています。ECMAScript 6では、型付き配列がコア言語に追加され、以前は通常の配列(.map()
、.filter()
など)でのみ使用可能だったメソッドが追加されました。
型付き配列の主なユースケースは次のとおりです。
ArrayBuffer
、型付き配列、DataView
型付き配列APIは、バイナリデータをArrayBuffer
のインスタンスに格納します
const buf = new ArrayBuffer(4); // length in bytes
// buf is initialized with zeros
ArrayBuffer自体はブラックボックスです。そのデータにアクセスするには、別のオブジェクト、つまり*ビューオブジェクト*でラップする必要があります。2種類のビューオブジェクトを使用できます
Uint8Array
:要素は符号なし8ビット整数です。*符号なし*とは、範囲がゼロから始まることを意味します。Int16Array
:要素は符号付き16ビット整数です。*符号付き*とは、符号があり、負、ゼロ、または正になる可能性があることを意味します。Float32Array
:要素は32ビット浮動小数点数です。Uint8
、Int16
、Float32
など)としてデータを解釈できます。図20は、APIのクラス図を示しています。
型付き配列は、いくつかの注目すべき違いを除いて、通常の配列とほぼ同じように使用されます
次のコードは、同じ型付き配列を作成する3つの異なる方法を示しています
// Argument: Typed Array or Array-like object
const ta1 = new Uint8Array([0, 1, 2]);
const ta2 = Uint8Array.of(0, 1, 2);
const ta3 = new Uint8Array(3); // length of Typed Array
0] = 0;
ta3[1] = 1;
ta3[2] = 2;
ta3[
.deepEqual(ta1, ta2);
assert.deepEqual(ta1, ta3); assert
const typedArray = new Int16Array(2); // 2 elements
.equal(typedArray.length, 2);
assert
.deepEqual(
assert.buffer, new ArrayBuffer(4)); // 4 bytes typedArray
const typedArray = new Int16Array(2);
.equal(typedArray[1], 0); // initialized with 0
assert1] = 72;
typedArray[.equal(typedArray[1], 72); assert
DataViewの使い方は次のとおりです
const dataView = new DataView(new ArrayBuffer(4));
.equal(dataView.getInt16(0), 0);
assert.equal(dataView.getUint8(0), 0);
assert.setUint8(0, 5); dataView
要素 | 型付き配列 | バイト数 | 説明 | |
---|---|---|---|---|
Int8 |
Int8Array |
1 | 1 | 8ビット符号付き整数 |
ES6 |
Uint8 |
1 | Uint8Array | 8ビット符号付き整数 |
1 |
8ビット符号なし整数 |
1 | Uint8Array | 8ビット符号付き整数 |
Uint8C | 8ビット符号付き整数 | |||
Uint8ClampedArray |
1 |
2 | (クランプ変換) | 8ビット符号付き整数 |
Int16 |
Int16Array |
2 | 2 | 8ビット符号付き整数 |
16ビット符号付き整数 |
Uint16 |
4 | Uint16Array | 8ビット符号付き整数 |
2 |
16ビット符号なし整数 |
4 | Int32 | 8ビット符号付き整数 |
Int32Array |
4 |
8 | 32ビット符号付き整数 | Uint32 |
Uint32Array |
4 |
8 | 32ビット符号なし整数 | Uint32 |
BigInt64 |
BigInt64Array |
4 | 8 | 8ビット符号付き整数 |
64ビット符号付き整数 |
ES2020 |
8 | BigUint64 | 8ビット符号付き整数 |
BigUint64Array
8
64ビット符号なし整数
Float32
Float32Array
4
32ビット浮動小数点数
Float64Array
表20は、使用可能な要素の型をリストしています。これらの型(例:Int32
)は、2つの場所に表示されます
function setAndGet(typedArray, value) {
0] = value;
typedArray[return typedArray[0];
}
型付き配列では、要素の型を指定します。たとえば、Int32Array
のすべての要素は、型Int32
を持ちます。要素の型は、型付き配列で異なる唯一の側面です。
const uint8 = new Uint8Array(1);
// Highest value of range
.equal(setAndGet(uint8, 255), 255);
assert// Overflow
.equal(setAndGet(uint8, 256), 0);
assert
// Lowest value of range
.equal(setAndGet(uint8, 0), 0);
assert// Underflow
.equal(setAndGet(uint8, -1), 255); assert
DataViewでは、.getInt32()
や.setInt32()
などのメソッドを使用するときに、ArrayBufferにアクセスするためのレンズとなります。
const int8 = new Int8Array(1);
// Highest value of range
.equal(setAndGet(int8, 127), 127);
assert// Overflow
.equal(setAndGet(int8, 128), -128);
assert
// Lowest value of range
.equal(setAndGet(int8, -128), -128);
assert// Underflow
.equal(setAndGet(int8, -129), 127); assert
要素型Uint8C
は特殊です。DataView
ではサポートされておらず、Uint8ClampedArray
を有効にするためにのみ存在します。この型付き配列は、canvas
要素(CanvasPixelArray
を置き換える場所)で使用され、それ以外の場合は避ける必要があります。Uint8C
とUint8
の唯一の違いは、オーバーフローとアンダーフローの処理方法です(次のサブセクションで説明)。
BigInt64
とBigUint64
は、bigintを介して処理されます。たとえば、セッターはbigintを受け入れ、ゲッターはbigintを返します。const uint8c = new Uint8ClampedArray(1);
// Highest value of range
.equal(setAndGet(uint8c, 255), 255);
assert// Overflow
.equal(setAndGet(uint8c, 256), 255);
assert
// Lowest value of range
.equal(setAndGet(uint8c, 0), 0);
assert// Underflow
.equal(setAndGet(uint8c, -1), 0); assert
32.2.1 オーバーフローとアンダーフローの処理
最小値から1を引くと、最大値に変換されます。
次の関数は、変換の仕組みを説明するのに役立ちます
アンダーフローするすべての値は、最小値に変換されます。
32.2.2 エンディアン
Uint16
など)が複数のバイトのシーケンスとして格納される場合は常に、*エンディアン*が重要になりますビッグエンディアン:最上位バイトが最初に来ます。たとえば、Uint16
値0x4321は、2つのバイト(最初に0x43、次に0x21)として格納されます。
.from<S>(
: Iterable<S>|ArrayLike<S>,
source?: S => ElementType, thisArg?: any)
mapfn: «ElementType»Array
リトルエンディアン:最下位バイトが最初に来ます。たとえば、Uint16
値0x4321は、2つのバイト(最初に0x21、次に0x43)として格納されます。
エンディアンは、CPUアーキテクチャごとに固定される傾向があり、ネイティブAPI全体で一貫しています。型付き配列はこれらのAPIと通信するために使用されるため、エンディアンはプラットフォームのエンディアンに従い、変更できません。
.deepEqual(
assertUint16Array.from([0, 1, 2]),
Uint16Array.of(0, 1, 2));
一方、プロトコルとバイナリファイルのエンディアンは異なりますが、プラットフォーム全体でフォーマットごとに固定されています。したがって、どちらのエンディアンでもデータにアクセスできる必要があります。DataViewはこのユースケースに対応し、値を取得または設定するときにエンディアンを指定できます。
.deepEqual(
assertUint16Array.from(Uint8Array.of(0, 1, 2)),
Uint16Array.of(0, 1, 2));
エンディアンに関するWikipediaの引用
.deepEqual(
assertUint16Array.from({0:0, 1:1, 2:2, length: 3}),
Uint16Array.of(0, 1, 2));
オプションの mapfn
を使用すると、source
の要素が結果の要素になる前に変換できます。 なぜマッピングと変換の 2 つのステップを一度に行うのでしょうか? .map()
を介して個別にマッピングするのと比較して、2 つの利点があります。
2 番目の利点の説明については、以下をお読みください。
静的メソッド .from()
は、オプションで Typed Array タイプ間のマッピングと変換の両方を行うことができます。 このメソッドを使用すると、エラーが発生する可能性が低くなります。
その理由を理解するために、まず Typed Array をより高い精度の Typed Array に変換してみましょう。 .from()
を使用してマッピングする場合、結果は自動的に正しくなります。 そうでない場合は、最初に変換してからマッピングする必要があります。
const typedArray = Int8Array.of(127, 126, 125);
.deepEqual(
assertInt16Array.from(typedArray, x => x * 2),
Int16Array.of(254, 252, 250));
.deepEqual(
assertInt16Array.from(typedArray).map(x => x * 2),
Int16Array.of(254, 252, 250)); // OK
.deepEqual(
assertInt16Array.from(typedArray.map(x => x * 2)),
Int16Array.of(-2, -4, -6)); // wrong
Typed Array から精度が低い Typed Array に変換する場合、.from()
を介したマッピングは正しい結果を生成します。 そうでない場合は、最初にマッピングしてから変換する必要があります。
.deepEqual(
assertInt8Array.from(Int16Array.of(254, 252, 250), x => x / 2),
Int8Array.of(127, 126, 125));
.deepEqual(
assertInt8Array.from(Int16Array.of(254, 252, 250).map(x => x / 2)),
Int8Array.of(127, 126, 125)); // OK
.deepEqual(
assertInt8Array.from(Int16Array.of(254, 252, 250)).map(x => x / 2),
Int8Array.of(-1, -2, -3)); // wrong
問題は、.map()
を介してマッピングする場合、入力タイプと出力タイプが同じになることです。 対照的に、.from()
は、任意の入力タイプから、レシーバーを介して指定する出力タイプに変換します。
Typed Array は反復可能です。 つまり、for-of
ループやその他の反復ベースのメカニズムを使用できます。
const ui8 = Uint8Array.of(0, 1, 2);
for (const byte of ui8) {
console.log(byte);
}// Output:
// 0
// 1
// 2
ArrayBuffer と DataView は反復可能ではありません。
Typed Array は通常の Array と非常によく似ています。.length
があり、要素にはブラケット演算子 []
を介してアクセスでき、標準の Array メソッドのほとんどを備えています。 Typed Array は、以下の点で通常の Array とは異なります。
Typed Array にはバッファがあります。 Typed Array ta
の要素は ta
に格納されず、ta.buffer
を介してアクセスできる関連付けられた ArrayBuffer に格納されます。
const ta = new Uint16Array(2); // 2 elements
.deepEqual(
assert.buffer, new ArrayBuffer(4)); // 4 bytes ta
Typed Array はゼロで初期化されます。
new Array(4)
は、要素のない通常の Array を作成します。 4 つの穴(要素が関連付けられていない .length
未満のインデックス)のみがあります。new Uint8Array(4)
は、4 つの要素がすべて 0 である Typed Array を作成します。.deepEqual(new Uint8Array(4), Uint8Array.of(0, 0, 0, 0)); assert
Typed Array のすべての要素は同じ型です。
要素を設定すると、値がその型に変換されます。
const ta = new Uint8Array(1);
0] = 257;
ta[.equal(ta[0], 1); // 257 % 256 (overflow)
assert
0] = '2';
ta[.equal(ta[0], 2); assert
要素を取得すると、数値または bigint が返されます。
const ta = new Uint8Array(1);
.equal(ta[0], 0);
assert.equal(typeof ta[0], 'number'); assert
Typed Array の .length
は、その ArrayBuffer から派生し、変更されることはありません(別の ArrayBuffer に切り替えない限り)。
通常の Array には穴がありますが、Typed Array にはありません。
通常の Array を Typed Array に変換するには、Typed Array コンストラクター(Array ライクなオブジェクトと Typed Array を受け入れる)または «ElementType»Array.from()
(反復可能オブジェクトと Array ライクなオブジェクトを受け入れる)に渡します。 例:
const ta1 = new Uint8Array([0, 1, 2]);
const ta2 = Uint8Array.from([0, 1, 2]);
.deepEqual(ta1, ta2); assert
Typed Array を通常の Array に変換するには、Array.from()
またはスプレッド構文を使用できます(Typed Array は反復可能であるため)。
.deepEqual(
assert...Uint8Array.of(0, 1, 2)], [0, 1, 2]
[;
).deepEqual(
assertArray.from(Uint8Array.of(0, 1, 2)), [0, 1, 2]
; )
Typed Array には、通常の Array のような .concat()
メソッドがありません。 回避策は、オーバーロードされたメソッド .set()
を使用することです。
.set(typedArray: TypedArray, offset=0): void
.set(arrayLike: ArrayLike<number>, offset=0): void
既存の typedArray
または arrayLike
を、インデックス offset
のレシーバーにコピーします。 TypedArray
は、すべての具体的な Typed Array クラスの架空の抽象スーパークラスです。
次の関数は、そのメソッドを使用して、ゼロ個以上の Typed Array(または Array ライクなオブジェクト)を resultConstructor
のインスタンスにコピーします。
function concatenate(resultConstructor, ...arrays) {
let totalLength = 0;
for (const arr of arrays) {
+= arr.length;
totalLength
}const result = new resultConstructor(totalLength);
let offset = 0;
for (const arr of arrays) {
.set(arr, offset);
result+= arr.length;
offset
}return result;
}.deepEqual(
assertconcatenate(Uint8Array, Uint8Array.of(1, 2), [3, 4]),
Uint8Array.of(1, 2, 3, 4));
ArrayBuffer、Typed Array、および DataView のクイックリファレンスの準備として、インデックスとオフセットの違いを学ぶ必要があります。
ブラケット演算子 [ ]
のインデックス: 非負のインデックス(0 から始まる)のみを使用できます。
通常の Array では、負のインデックスに書き込むとプロパティが作成されます。
const arr = [6, 7];
-1] = 5;
arr[.deepEqual(
assertObject.keys(arr), ['0', '1', '-1']);
Typed Array では、負のインデックスへの書き込みは無視されます。
const tarr = Uint8Array.of(6, 7);
-1] = 5;
tarr[.deepEqual(
assertObject.keys(tarr), ['0', '1']);
ArrayBuffer、Typed Array、および DataView のメソッドのインデックス: すべてのインデックスは負にすることができます。 負の場合、エンティティの長さに加算されて実際のインデックスが生成されます。 したがって、-1
は最後の要素、-2
は最後から 2 番目の要素などを参照します。 通常の Array のメソッドも同じように機能します。
const ui8 = Uint8Array.of(0, 1, 2);
.deepEqual(ui8.slice(-1), Uint8Array.of(2)); assert
Typed Array および DataView のメソッドに渡されるオフセット: 非負である必要があります。例:
const dataView = new DataView(new ArrayBuffer(4));
.throws(
assert=> dataView.getUint8(-1),
()
{name: 'RangeError',
message: 'Offset is outside the bounds of the DataView',
; })
パラメータがインデックスかオフセットかは、ドキュメントを確認することによってのみ判別できます。簡単なルールはありません。
ArrayBuffer はバイナリデータを格納し、Typed Array および DataView を介してアクセスすることを目的としています。
new ArrayBuffer()
コンストラクターの型シグネチャは次のとおりです。
new ArrayBuffer(length: number)
new
を介してこのコンストラクターを呼び出すと、容量が length
バイトのインスタンスが作成されます。 これらのバイトはそれぞれ初期値として 0 です。
ArrayBuffer の長さを変更することはできません。 長さの異なる新しいものを作成することしかできません。
ArrayBuffer
の静的メソッドArrayBuffer.isView(arg: any)
arg
がオブジェクトであり、ArrayBuffer の*ビュー*(つまり、Typed Array または DataView である)の場合、true
を返します。
ArrayBuffer.prototype
のプロパティget .byteLength(): number
この ArrayBuffer の容量をバイト単位で返します。
.slice(startIndex: number, endIndex=this.byteLength)
インデックスが startIndex
以上 endIndex
未満であるこの ArrayBuffer のバイトを含む新しい ArrayBuffer を作成します。 start
と endIndex
は負にすることができます(§32.4「クイックリファレンス: インデックスとオフセット」を参照)。
さまざまな Typed Array オブジェクトのプロパティは、2 つのステップで導入されます。
TypedArray
: まず、すべての Typed Array クラスの抽象スーパークラス(この章の冒頭のクラス図で示されています)を見ていきます。 このスーパークラスを TypedArray
と呼んでいますが、JavaScript から直接アクセスすることはできません。 TypedArray.prototype
は、Typed Array のすべてのメソッドを格納します。«ElementType»Array
: 具体的な Typed Array クラスは、Uint8Array
、Int16Array
、Float32Array
などと呼ばれます。 これらは、new
、.of
、および .from()
を介して使用するクラスです。TypedArray<T>
の静的メソッド両方の静的 TypedArray
メソッドは、そのサブクラス(Uint8Array
など)によって継承されます。 TypedArray
は抽象的です。 したがって、これらのメソッドは常に、具体的で直接インスタンスを持つことができるサブクラスを介して使用します。
.from<S>(source: Iterable<S>|ArrayLike<S>, mapfn?: S => T, thisArg?: any) : instanceof this
反復可能オブジェクト(Array および Typed Array を含む)またはArray ライクなオブジェクトを this
のインスタンスに変換します(instanceof this
は、その事実を表現するために私が考案したものです)。
.deepEqual(
assertUint16Array.from([0, 1, 2]),
Uint16Array.of(0, 1, 2));
オプションの mapfn
を使用すると、source
の要素が結果の要素になる前に変換できます。
.deepEqual(
assertInt16Array.from(Int8Array.of(127, 126, 125), x => x * 2),
Int16Array.of(254, 252, 250));
.of(...items: bigint[]): instanceof this
(BigInt64Array
, BigUint64Array
)
.of(...items: number[]): instanceof this
(その他すべての Typed Array)
要素が items
(要素型に強制変換される)である this
の新しいインスタンスを作成します。
.deepEqual(
assertInt16Array.of(-1234, 5, 67),
new Int16Array([-1234, 5, 67]) );
TypedArray<T>.prototype
のプロパティTyped Array メソッドで受け入れられるインデックスは負にすることができます(従来の Array メソッドと同じように機能します)。 オフセットは非負である必要があります。 詳細については、§32.4「クイックリファレンス: インデックスとオフセット」を参照してください。
次のプロパティは Typed Array 固有です。通常の Array にはありません。
get .buffer(): ArrayBuffer
この Typed Array を支えるバッファを返します。
get .length(): number
この Typed Array のバッファの要素数を返します。.
get .byteLength(): number
この Typed Array のバッファのサイズをバイト単位で返します。
get .byteOffset(): number
この Typed Array が ArrayBuffer 内で「開始」するオフセットを返します。
.set(typedArray: TypedArray, offset=0): void
.set(arrayLike: ArrayLike<bigint>, offset=0): void
(BigInt64Array
, BigUint64Array
)
.set(arrayLike: ArrayLike<number>, offset=0): void
(その他すべての Typed Array)
最初のパラメータのすべての要素をこの Typed Array にコピーします。 パラメータのインデックス 0 の要素は、この Typed Array のインデックス offset
に書き込まれます(など)。 Array ライクなオブジェクトの詳細については、§31.5「Array ライクなオブジェクト」を参照してください。
.subarray(startIndex=0, endIndex=this.length): TypedArray<T>
この Typed Array と同じバッファを持つ新しい Typed Array を返しますが、範囲は(通常)小さくなります。 startIndex
が非負の場合、結果の Typed Array の最初の要素は this[startIndex]
、2 番目は this[startIndex+1]
(など)です。 startIndex
が負の場合、適切に変換されます。
次のメソッドは、基本的に通常の Array のメソッドと同じです。
.at(index: number): T | undefined
[R, ES2022].copyWithin(target: number, start: number, end=this.length): this
[W, ES6].entries(): Iterable<[number, T]>
[R, ES6].every(callback: (value: T, index: number, array: TypedArray<T>) => boolean, thisArg?: any): boolean
[R, ES6].fill(value: T, start=0, end=this.length): this
[W, ES6].filter(callback: (value: T, index: number, array: TypedArray<T>) => any, thisArg?: any): T[]
[R, ES6].find(predicate: (value: T, index: number, obj: T[]) => boolean, thisArg?: any): T | undefined
[R, ES6].findIndex(predicate: (value: T, index: number, obj: T[]) => boolean, thisArg?: any): number
[R, ES6].forEach(callback: (value: T, index: number, array: TypedArray<T>) => void, thisArg?: any): void
[R, ES6].includes(searchElement: T, fromIndex=0): boolean
[R, ES2016].indexOf(searchElement: T, fromIndex=0): number
[R, ES6].join(separator = ','): string
[R, ES6].keys(): Iterable<number>
[R, ES6].lastIndexOf(searchElement: T, fromIndex=this.length-1): number
[R, ES6].map<U>(mapFunc: (value: T, index: number, array: TypedArray<T>) => U, thisArg?: any): U[]
[R, ES6].reduce<U>(callback: (accumulator: U, element: T, index: number, array: T[]) => U, init?: U): U
[R, ES6].reduceRight<U>(callback: (accumulator: U, element: T, index: number, array: T[]) => U, init?: U): U
[R, ES6].reverse(): this
[W, ES6].slice(start=0, end=this.length): T[]
[R, ES6].some(callback: (value: T, index: number, array: TypedArray<T>) => boolean, thisArg?: any): boolean
[R, ES6].sort(compareFunc?: (a: T, b: T) => number): this
[W, ES6].toString(): string
[R, ES6].values(): Iterable<T>
[R, ES6]これらのメソッドの動作の詳細については、§31.13.3 “Array.prototype
のメソッド”を参照してください。
new «ElementType»Array()
各 Typed Array コンストラクタは、«ElementType»Array
のパターンに従う名前を持ちます。ここで、«ElementType»
は冒頭の表にある要素型のいずれかです。つまり、Typed Array には 11 個のコンストラクタがあります。
Float32Array
、Float64Array
Int8Array
、Int16Array
、Int32Array
、BigInt64Array
Uint8Array
、Uint8ClampedArray
、Uint16Array
、Uint32Array
、BigUint64Array
各コンストラクタには、4 つの *オーバーロードされた* バージョンがあります。つまり、受け取る引数の数と型によって動作が異なります。
new «ElementType»Array(buffer: ArrayBuffer, byteOffset=0, length=0)
バッファが buffer
である新しい «ElementType»Array
を作成します。指定された byteOffset
からバッファへのアクセスを開始し、指定された length
を持ちます。length
はバイト数ではなく、Typed Array の要素数(それぞれ 1〜8 バイト)をカウントすることに注意してください。
new «ElementType»Array(length=0)
指定された length
と適切なバッファを持つ新しい «ElementType»Array
を作成します。バッファのサイズ(バイト単位)は、
* «ElementType»Array.BYTES_PER_ELEMENT length
new «ElementType»Array(source: TypedArray)
要素の値が source
の要素と同じであるが、ElementType
に型変換された新しい «ElementType»Array
のインスタンスを作成します。
new «ElementType»Array(source: ArrayLike<bigint>)
(BigInt64Array
、BigUint64Array
)
new «ElementType»Array(source: ArrayLike<number>)
(その他のすべての Typed Array)
要素の値が source
の要素と同じであるが、ElementType
に型変換された新しい «ElementType»Array
のインスタンスを作成します。配列風オブジェクトの詳細については、§31.5 “配列風オブジェクト”を参照してください。
«ElementType»Array
の静的プロパティ«ElementType»Array.BYTES_PER_ELEMENT: number
1 つの要素を格納するために必要なバイト数をカウントします。
> Uint8Array.BYTES_PER_ELEMENT1
> Int16Array.BYTES_PER_ELEMENT2
> Float64Array.BYTES_PER_ELEMENT8
«ElementType»Array.prototype
のプロパティ.BYTES_PER_ELEMENT: number
«ElementType»Array.BYTES_PER_ELEMENT
と同じです。
new DataView()
new DataView(buffer: ArrayBuffer, byteOffset=0, byteLength=buffer.byteLength-byteOffset)
buffer
に格納される新しい DataView を作成します。デフォルトでは、新しい DataView は buffer
全体にアクセスできます。最後の 2 つのパラメータを使用すると、それを変更できます。DataView.prototype
のプロパティこのセクションの残りの部分では、«ElementType»
は次のいずれかを指します。
Int8
、Int16
、Int32
、BigInt64
Uint8
、Uint16
、Uint32
、BigUint64
Float32
、Float64
これらは DataView.prototype
のプロパティです。
get .buffer(): ArrayBuffer
この DataView の ArrayBuffer を返します。
get .byteLength(): number
この DataView がアクセスできるバイト数を返します。
get .byteOffset(): number
この DataView がバッファ内のバイトへのアクセスを開始するオフセットを返します。
.get«ElementType»(byteOffset: number, littleEndian=false): bigint
(BigInt64
、BigUint64
)
.get«ElementType»(byteOffset: number, littleEndian=false): number
(その他のすべての要素型)
この DataView のバッファから値を読み取ります。
.set«ElementType»(byteOffset: number, value: bigint, littleEndian=false): void
(BigInt64
、BigUint64
)
.set«ElementType»(byteOffset: number, value: number, littleEndian=false): void
(その他のすべての要素型)
value
をこの DataView のバッファに書き込みます。