메모리에서 사용할 바이트 수를 명시하며 선언한다
var arrbuf = new ArrayBuffer(bytes)
Array와 달리 무작위 위치의 데이터에 접근 할 수 없다.
다시 말해, arrbuf[0], arrbuf[1], ... 등의 형태로 데이터에 접근할 수 없다.
view 역할을 하는 객체 (TypedArray)를 사용한다
TypedArray : 특정 자료형으로 값을 읽을 수 있다.
C언어의 Union과 유사한 기능을 수행한다고 볼 수 있다.
Int8Array : 8 bit의 정수로 값에 접근한다.
Uint8Array : 8 bit의 음이 아닌 정수로 값에 접근한다.
...


flags : 해당 ArrayBuffer와 관련된 flag 값이 저장된다.
initializedLength
[ArrayBuffer Object 이름].byteLength 값이다.length = arrbuf.byteLengthcapacity : 해당 ArrayBuffer Object로 DataView Object가 생성되었을 경우 DataView Object의 주소이다.
length
ArrayBuffer를 다루기 위한 API를 제공한다.
⇒ DataView Object로 ArrayBuffer의 이진 데이터를 읽거나 쓸 수 있다.
var dv = new DataView(ArrayBuffer_Object)
set????(offset, value, little_endian)
: ArrayBuffer Data 시작 위치부터 offset 위치에 ???? 형식으로 value를 저장한다.
get????(offset, little_endian)
: ArrayBuffer Data 시작 위치부터 offset 위치의 값을 ???? 형식으로 읽는다.
dv.setInt16(offset, value, little_endian)
var result = dv.getInt16(offset, little_endian)
// ArrayBuffer, DataView 예시 코드
// [1] Assign 32 bytes
var arrbuf = new ArrayBuffer(32)
// [2] Print length of arrbuf : 32
console.log(arrbuf.byteLength)
// [3] get DataView object of arrbuf
var dv = new DataView(arrbuf)
// [3] Change 16 byte value at arrbuf with offset 16 byte by little-endian
dv.setInt16(16, 255, true)
// [4] Print the 16 byte value of first half of arrbuf
console.log(dv.getInt16(0, true))
// [5] Print the 16 byte value of second half of arrbuf
console.log(dv.getInt16(16, true))

+) DataView Object가 존재하지 않는 Property를 참조하면 DataView Object는 getProperty 함수를 호출해 부모 Object로부터 해당 Property를 검색한다.

DataView)는 elements_ field에 emptyElementsHeader의 base address를 저장한다.emptyElementsHeader는 static instance로 선언되어 EScript.api의 data 영역에 존재한다.
2. DataView Object에서도 언급했듯 DataView Object가 존재하지 않는 property를 참조하면 DataView Object는 getProperty 함수를 호출해 해당 Property 검색한다.

피드백은 언제나 환영합니다