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๋ฐ์ดํธ ๋ฒํผ๋ฅผ ๋ง๋ญ๋๋ค.
const buffer = new ArrayBuffer(8);
const view = new Int32Array(buffer);
๋ช ์ธ์
Specification |
---|
ECMAScriptยฎ 2026 Language Specification # sec-arraybuffer-objects |
๋ธ๋ผ์ฐ์ ํธํ์ฑ
Loadingโฆ