NATIVE

settings_applicationsObject

NATIVE

Editing
  • account_tree
  • bug_report

ObjectArrayBuffer

고정된 크기의 메모리 공간을 갖는 버퍼(buffer)를 생성해서 바이너리(binary) 데이터의 할당을 다루는 객체이다.

설명

이름을 이유로 ArrayBuffer 객체는 본능적으로 Array이라는 객체와 연관지어 생각할 수도 있겠지만 전혀 관계가 없다. 단지 배열이 집합이라는 의미를 가지고 있으므로 바이너리(binary) 데이터가 집합된 공간이라는 의미정도로 생각하면 될 것 같다.

ArrayBuffer 객체는 바이너리(binary) 데이터를 담을 버퍼(buffer)를 생성하지만 직접 할당된 데이터에 접근할 수는 없다. 대신에 TypedArray 또는 DataView 객체를 통해서 지정된 형식으로 읽기와 쓰기가 가능하다.

ArrayBuffer의 크기 조정

ArrayBuffer() 생성자 함수를 호출할 때 maxByteLength 옵션을 포함하면 생성된 ArrayBuffer 인스턴스의 바이트(byte) 크기를 조정할 수 있다. 크기 조정 가능 여부는 resizable 프로퍼티를 통해 확인이 가능하고 가능한 최대 크기는 maxByteLength 프로퍼티를 통해 확인이 가능하다.

크기 변경이 가능하다면 resize() 메소드를 사용하여 새로운 크기를 할당할 수 있다. 이때 새로운 바이트(byte)는 0으로 초기화된다.

ArrayBuffer의 전송(transferring)

ArrayBuffer 객체는 웹 워커(Web Workers)의 구조화된 복제 알고리즘(structured clone algorithm)을 사용하여 서로 다른 실행 컨텍스트(context)간 전송이 될 수 있다. 예를 들어서 Worker 또는 ServiceWorkerpostMessage()로 전송이 될 수 있다.

네이티브(native)내의 ArrayBuffer 객체에서는 transfer() 또는 transferToFixedLength() 메소드를 사용하여 다른 ArrayBuffer로 전송할 수 있다.

어떠한 방식이든 일단 ArrayBuffer가 전송이 되면 byteLength 프로퍼티의 값이 0이 된다. 이는 사용할 수 없음을 나타낸다.

하위 트리 탐색

  • Constructor

    ArrayBuffer 객체는 ArrayBuffer() 생성자 함수에 의해서만 인스턴스 생성이 가능하다.

    • ArrayBuffer()

      새로운 ArrayBuffer 객체의 인스턴스를 생성해 반환한다.

  • [[Prototype]]

    • Properties

      • byteLength

        ArrayBuffer의 크기를 바이트(byte) 단위로 조회한다.

      • detached

        생성된 버퍼(buffer)가 분리(transferred)되었는지 여부를 나타낸다.

      • maxByteLength

        버퍼(buffer)의 크기를 조정할 수 있는 최대 길이(바이트: byte)를 나타낸다.

      • resizable

        버퍼(buffer)의 크기를 조정할 수 있는지 여부를 나타낸다.

    • Methods

      • resize()

        생성된 ArrayBuffer의 크기(바이트: byte)를 지정된 크기로 조정한다.

      • slice()

        현재 ArrayBuffer를 지정된 시작과 끝에 맞추어 자른 새로운 ArrayBuffer를 반환한다.

      • transfer()

        현재 버퍼(buffer)와 동일한 바이트(byte) 데이터를 가진 새로운 ArrayBuffer를 생성한 후 출처 ArrayBuffer를 분리한다.

      • transferToFixedLength()

        현재 버퍼(buffer)와 동일한 바이트(byte) 데이터를 가진 크기 조정이 불가능한 새로운 ArrayBuffer를 생성한 후 출처 ArrayBuffer를 분리한다.

  • Static

    정적(static) 멤버를 의미하며 인스턴스(instance)에 상속되어 사용할 수 없고 오로지 하위를 포함하여 객체(object) 또는 인터페이스(interface) 자신에서 해당 멤버에 접근이 가능하다. 

    • Methods

      • isView()

        인수로 지정된 값이 TypedArray 객체 또는 DataView와 같은 ArrayBuffer 뷰(view)인지를 확인한다.

버전 명세

ECMAScript 2024(15th Edition)
#sec-arraybuffer-objects

지원 웹브라우저