고정된 크기의 메모리 공간을 갖는 버퍼(buffer)를 생성해서 바이너리(binary) 데이터의 할당을 다루는 객체이다.
이름을 이유로 ArrayBuffer
객체는 본능적으로 Array
이라는 객체와 연관지어 생각할 수도 있겠지만 전혀 관계가 없다. 단지 배열이 집합이라는 의미를 가지고 있으므로 바이너리(binary) 데이터가 집합된 공간이라는 의미정도로 생각하면 될 것 같다.
ArrayBuffer
객체는 바이너리(binary) 데이터를 담을 버퍼(buffer)를 생성하지만 직접 할당된 데이터에 접근할 수는 없다. 대신에 TypedArray
또는 DataView
객체를 통해서 지정된 형식으로 읽기와 쓰기가 가능하다.
ArrayBuffer()
생성자 함수를 호출할 때 maxByteLength
옵션을 포함하면 생성된 ArrayBuffer
인스턴스의 바이트(byte) 크기를 조정할 수 있다. 크기 조정 가능 여부는 resizable
프로퍼티를 통해 확인이 가능하고 가능한 최대 크기는 maxByteLength
프로퍼티를 통해 확인이 가능하다.
크기 변경이 가능하다면 resize()
메소드를 사용하여 새로운 크기를 할당할 수 있다. 이때 새로운 바이트(byte)는 0
으로 초기화된다.
ArrayBuffer
객체는 웹 워커(Web Workers)의 구조화된 복제 알고리즘(structured clone algorithm)을 사용하여 서로 다른 실행 컨텍스트(context)간 전송이 될 수 있다. 예를 들어서 Worker
또는 ServiceWorker
의 postMessage()
로 전송이 될 수 있다.
네이티브(native)내의 ArrayBuffer
객체에서는 transfer()
또는 transferToFixedLength()
메소드를 사용하여 다른 ArrayBuffer
로 전송할 수 있다.
어떠한 방식이든 일단 ArrayBuffer
가 전송이 되면 byteLength
프로퍼티의 값이 0
이 된다. 이는 사용할 수 없음을 나타낸다.
ArrayBuffer
객체는 ArrayBuffer()
생성자 함수에 의해서만 인스턴스 생성이 가능하다.
새로운 ArrayBuffer
객체의 인스턴스를 생성해 반환한다.
ArrayBuffer
의 크기를 바이트(byte) 단위로 조회한다.
생성된 버퍼(buffer)가 분리(transferred)되었는지 여부를 나타낸다.
버퍼(buffer)의 크기를 조정할 수 있는 최대 길이(바이트: byte)를 나타낸다.
버퍼(buffer)의 크기를 조정할 수 있는지 여부를 나타낸다.
생성된 ArrayBuffer
의 크기(바이트: byte)를 지정된 크기로 조정한다.
현재 ArrayBuffer
를 지정된 시작과 끝에 맞추어 자른 새로운 ArrayBuffer
를 반환한다.
현재 버퍼(buffer)와 동일한 바이트(byte) 데이터를 가진 새로운 ArrayBuffer
를 생성한 후 출처 ArrayBuffer
를 분리한다.
현재 버퍼(buffer)와 동일한 바이트(byte) 데이터를 가진 크기 조정이 불가능한 새로운 ArrayBuffer
를 생성한 후 출처 ArrayBuffer
를 분리한다.
정적(static) 멤버를 의미하며 인스턴스(instance)에 상속되어 사용할 수 없고 오로지 하위를 포함하여 객체(object) 또는 인터페이스(interface) 자신에서 해당 멤버에 접근이 가능하다.
인수로 지정된 값이 TypedArray
객체 또는 DataView
와 같은 ArrayBuffer
뷰(view)인지를 확인한다.