This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

ArrayBuffer

Baseline Widely available *

This feature is well established and works across many devices and browser versions. Itโ€™s been available across browsers since โจ2015๋…„ 7์›”โฉ.

* Some parts of this feature may have varying levels of support.

ArrayBuffer ๊ฐ์ฒด๋Š” ์ผ๋ฐ˜์ ์ธ ์›์‹œ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ ๋ฒ„ํผ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์–ธ์–ด์—์„œ๋Š” ์ข…์ข… "๋ฐ”์ดํŠธ ๋ฐฐ์—ด"์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๋ฐ”์ดํŠธ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. ArrayBuffer์˜ ๋‚ด์šฉ์„ ์ง์ ‘ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋Œ€์‹  ๋ฒ„ํผ๋ฅผ ํŠน์ • ํ˜•์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ํ˜•์‹ํ™” ๋ฐฐ์—ด์ด๋‚˜ DataView ๊ฐ์ฒด ์ค‘ ํ•˜๋‚˜๋ฅผ ์ƒ์„ฑํ•˜์—ฌ, ์ด๋ฅผ ํ†ตํ•ด ๋ฒ„ํผ์˜ ๋‚ด์šฉ์„ ์ฝ๊ฑฐ๋‚˜ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ArrayBuffer() ์ƒ์„ฑ์ž๋Š” ์ฃผ์–ด์ง„ ๊ธธ์ด(๋ฐ”์ดํŠธ)๋ฅผ ๊ฐ€์ง„ ์ƒˆ๋กœ์šด ArrayBuffer๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. Base64 ๋ฌธ์ž์—ด์ด๋‚˜ ๋กœ์ปฌ ํŒŒ์ผ๊ณผ ๊ฐ™์€ ๊ธฐ์กด ๋ฐ์ดํ„ฐ์—์„œ๋„ ๋ฐฐ์—ด ๋ฒ„ํผ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ArrayBuffer๋Š” Transferable objects์ž…๋‹ˆ๋‹ค.

์„ค๋ช…

ArrayBuffers ํฌ๊ธฐ ์กฐ์ ˆํ•˜๊ธฐ

ArrayBuffer ๊ฐ์ฒด๋Š” ArrayBuffer() ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ maxByteLength ์˜ต์…˜์„ ํฌํ•จํ•˜์—ฌ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ArrayBuffer์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€ ๊ทธ๋ฆฌ๊ณ  ์ตœ๋Œ€ ํฌ๊ธฐ๋Š” ๊ฐ๊ฐ resizable์™€ maxByteLength ์†์„ฑ์— ์ ‘๊ทผํ•˜์—ฌ ์งˆ์˜ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. resize() ํ˜ธ์ถœ๋กœ ํฌ๊ธฐ ์กฐ์ •์ด ๊ฐ€๋Šฅํ•œ ArrayBuffer์— ์ƒˆ ํฌ๊ธฐ๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ๋ฐ”์ดํŠธ๋Š” 0์œผ๋กœ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ArrayBuffer์˜ ํฌ๊ธฐ๋ฅผ ๋” ํšจ์œจ์ ์œผ๋กœ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ƒˆ๋กœ์šด ํฌ๊ธฐ๋กœ ๋ฒ„ํผ์˜ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด์™€ ๊ด€๋ จํ•˜์—ฌ WebAssembly์™€ JavaScript ํŒจ๋ฆฌํ‹ฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค(Wasm ์„ ํ˜• ๋ฉ”๋ชจ๋ฆฌ๋Š” WebAssembly.Memory.prototype.grow()๋กœ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค).

ArrayBuffers ์ „์†กํ•˜๊ธฐ

ArrayBuffer ๊ฐ์ฒด๋Š” Web Workers ํ˜น์€ ์„œ๋น„์Šค ์›Œ์ปค, structured clone algorithm ์‚ฌ์šฉ๊ณผ ๊ฐ™์ด ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์‹คํ–‰ ๋ฌธ๋งฅ ๊ฐ„์— ์ „์†ก๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” Worker.postMessage() ํ˜น์€ ServiceWorker.postMessage() ํ˜ธ์ถœ์—์„œ ์ „์†ก ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋กœ ArrayBuffer๋ฅผ ์ „๋‹ฌํ•จ์œผ๋กœ์„œ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆœ์ˆ˜ํ•œ JavaScript์—์„œ๋Š” transfer() ํ˜น์€ transferToFixedLength() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์†Œ์œ ๊ถŒ์„ ํ•˜๋‚˜์˜ ArrayBuffer์—์„œ ๋‹ค๋ฅธ ArrayBuffer๋กœ ์ด์ „ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

ArrayBuffer๊ฐ€ ์ „์†ก๋˜๋ฉด ์›๋ณธ์€ ๋” ์ด์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋˜๋Š” ๋ถ„๋ฆฌ ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์–ด๋А ์ˆœ๊ฐ„์—๋“  ์‹ค์ œ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ArrayBuffer์˜ ๋ณต์‚ฌ๋ณธ์€ ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ถ„๋ฆฌ๋œ ๋ฒ„ํผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋™์ž‘์„ ํ•ฉ๋‹ˆ๋‹ค.

  • byteLength๋Š” 0์ด ๋ฉ๋‹ˆ๋‹ค(๋ฒ„ํผ์™€ ์—ฐ๊ด€๋œ ํ˜•์‹ํ™” ๋ฐฐ์—ด ๋ทฐ ๋ชจ๋‘์—์„œ).
  • resize()์™€ slice()์™€ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋Š” ํ˜ธ์ถœ๋  ๋•Œ TypeError๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ์—ฐ๊ด€๋œ ํƒ€์ž…์ด ์ง€์ •๋œ ๋ฐฐ์—ด ๋ทฐ์˜ ๋ฉ”์„œ๋“œ๋„ TypeError๋ฅผ ๋˜์ง‘๋‹ˆ๋‹ค. ์—ฐ๊ด€๋œ ํ˜•์‹ํ™” ๋ฐฐ์—ด ๋ทฐ์˜ ๋ฉ”์„œ๋“œ ์—ญ์‹œ TypeError๋ฅผ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

ArrayBuffer๊ฐ€ ๋ถ„๋ฆฌ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋Š” detached ์†์„ฑ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ์„ฑ์ž

ArrayBuffer()

์ƒˆ๋กœ์šด ArrayBuffer ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ •์  ์†์„ฑ

get ArrayBuffer[@@species]

ํŒŒ์ƒ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ƒ์„ฑ์ž ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

์ •์  ๋ฉ”์„œ๋“œ

ArrayBuffer.isView()

arg ์œ ํ˜•์ด ํ˜•์‹ํ™” ๋ฐฐ์—ด ๊ฐ์ฒด์ด๊ฑฐ๋‚˜ DataView์™€ ๊ฐ™์€ ArrayBuffer ์ค‘ ํ•˜๋‚˜์ธ ๊ฒฝ์šฐ, true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ธ์Šคํ„ด์Šค ์†์„ฑ

๋‹ค์Œ ์†์„ฑ์€ ArrayBuffer.prototype์— ์ •์˜๋˜์–ด ์žˆ์œผ๋ฉฐ ๋ชจ๋“  ArrayBuffer ์ธ์Šคํ„ด์Šค์™€ ๊ณต์œ ๋ฉ๋‹ˆ๋‹ค.

ArrayBuffer.prototype.byteLength

ArrayBuffer์˜ ์ฝ๊ธฐ ์ „์šฉ ํฌ๊ธฐ(๋ฐ”์ดํŠธ)์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด๋ฆฌ ๊ตฌ์„ฑ๋  ๋•Œ ์„ค์ •๋˜๋ฉฐ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ArrayBuffer.prototype.byteLength

ArrayBuffer์˜ ๋ฐ”์ดํŠธ ๋‹จ์œ„์˜ ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด์ด ์ƒ์„ฑ๋  ๋•Œ ์„ค์ •๋˜๋ฉฐ, ArrayBuffer์˜ ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ArrayBuffer.prototype.resize() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ArrayBuffer.prototype.constructor

์ธ์Šคํ„ด์Šค ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ์ƒ์„ฑ์ž ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ArrayBuffer ์ธ์Šคํ„ด์Šค์˜ ๊ฒฝ์šฐ ArrayBuffer ์ƒ์„ฑ์ž๊ฐ€ ์ดˆ๊ธฐ ๊ฐ’์ž…๋‹ˆ๋‹ค.

ArrayBuffer.prototype.detached

์ฝ๊ธฐ ์ „์šฉ์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ArrayBuffer๊ฐ€ ๋ถ„๋ฆฌ(์ „์†ก)๋˜์—ˆ๋‹ค๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

ArrayBuffer.prototype.maxByteLength

ArrayBuffer์˜ ํฌ๊ธฐ๊ฐ€ ์กฐ์ ˆ ๊ฐ€๋Šฅํ•œ ๋ฐ”์ดํŠธ ๋‹จ์œ„์˜ ์ฝ๊ธฐ ์ „์šฉ ์ตœ๋Œ€ ํฌ๊ธฐ ์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด์ด ์ƒ์„ฑ๋ ๋•Œ ์„ค์ •๋˜๋ฉฐ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ArrayBuffer.prototype.resizable

์ฝ๊ธฐ ์ „์šฉ์••๋‹ˆ๋‹ค. ArrayBuffer๊ฐ€ ํฌ๊ธฐ ์กฐ์ ˆ์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

ArrayBuffer.prototype[@@toStringTag]

@@toStringTag ์†์„ฑ์˜ ์ดˆ๊ธฐ๊ฐ’์€ ๋ฌธ์ž์—ด "ArrayBuffer" ์ž…๋‹ˆ๋‹ค. ์ด ์†์„ฑ์€ Object.prototype.toString()์—์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ธ์Šคํ„ด์Šค ๋ฉ”์„œ๋“œ

ArrayBuffer.prototype.resize()

๋ฐ”์ดํŠธ ๋‹จ์œ„์˜ ArrayBuffer์˜ ํฌ๊ธฐ๋ฅผ ์ง€์ •๋œ ํฌ๊ธฐ๋กœ ์žฌ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

ArrayBuffer.prototype.slice()

์ด ArrayBuffer์˜ begin์„ ํฌํ•จํ•œ ์ง€์ ๋ถ€ํ„ฐ end๋ฏธ๋งŒ์˜ ๋ฐ”์ดํŠธ๊ฐ€ ๋ณต์‚ฌ๋œ ์ƒˆ ArrayBuffer๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. begin ๋˜๋Š” end๊ฐ€ ์Œ์ˆ˜๋ผ๋ฉด ๋ฐฐ์—ด์˜ ์‹œ์ž‘์ด ์•„๋‹Œ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.

ArrayBuffer.prototype.transfer()

์ด ๋ฒ„ํผ์™€ ๋™์ผํ•œ ๋ฐ”์ดํŠธ ๋‚ด์šฉ์œผ๋กœ ์ƒˆ ArrayBuffer๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋‹ค์Œ ์ด ๋ฒ„ํผ๋ฅผ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

ArrayBuffer.prototype.transferToFixedLength()

์ด ๋ฒ„ํผ์™€ ๋™์ผํ•œ ๋ฐ”์ดํŠธ ๋‚ด์šฉ์œผ๋กœ ํฌ๊ธฐ ์กฐ์ ˆ์ด ๋ถˆ๊ฐ€ํ•œ ์ƒˆ ArrayBuffer๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋‹ค์Œ ์ด ๋ฒ„ํผ๋ฅผ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

ArrayBuffer.prototype.slice()

์ปจํ…์ธ ์˜ begin์„ ํฌํ•จํ•œ ์ง€์ ๋ถ€ํ„ฐ end๋ฏธ๋งŒ๊นŒ์ง€ ํ•ด๋‹น ArrayBuffer์˜ ๋ฐ”์ดํŠธ ๋ณต์‚ฌ๋ณธ์ธ ์ƒˆ ArrayBuffer๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. begin ๋˜๋Š” end๊ฐ€ ์Œ์ˆ˜์ด๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ ๋ฐฐ์—ด ๋์—์„œ ์ธ๋ฑ์Šค๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ

ArrayBuffer ๋งŒ๋“ค๊ธฐ

์ด ์˜ˆ์—์„œ๋Š” ๋ฒ„ํผ๋ฅผ ์ฐธ์กฐํ•˜๋Š” Int32Array ๋ทฐ๊ฐ€ ์žˆ๋Š” 8๋ฐ”์ดํŠธ ๋ฒ„ํผ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

js
const buffer = new ArrayBuffer(8);
const view = new Int32Array(buffer);

๋ช…์„ธ์„œ

Specification
ECMAScriptยฎ 2026 Language Specification
# sec-arraybuffer-objects

๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ

๊ฐ™์ด ๋ณด๊ธฐ