--- title: ArrayBuffer slug: Web/JavaScript/Reference/Global_Objects/ArrayBuffer translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer ---

{{JSRef}}

ArrayBuffer 物件是一種表示通用、固定大小的原始二進制資料緩衝。想要直接操作一個 ArrayBuffer 物件的內容是不可能的。若要讀寫該緩衝的內容則必須透過視圖,可以選擇建立一個 {{jsxref("DataView")}} 視圖物件或是一個限定其成員為某種型別的 {{jsxref("TypedArray")}} 視圖物件,它們皆能以特定的型別解讀、修改 ArrayBuffer

語法

new ArrayBuffer(length)

參數

length
要建立的緩衝陣列大小,以位元組(byte)計算。

回傳值

為一個新建立的指定大小 ArrayBuffer 物件,其內容皆初始化為 0。

Exceptions

A {{jsxref("RangeError")}} is thrown if the length is larger than {{jsxref("Number.MAX_SAFE_INTEGER")}} (>= 2 ** 53) or negative.

說明

The ArrayBuffer constructor creates a new ArrayBuffer of the given length in bytes.

從既有的資料取得 ArrayBuffer

屬性

ArrayBuffer.length
The ArrayBuffer constructor's length property whose value is 1.
{{jsxref("ArrayBuffer.@@species", "get ArrayBuffer[@@species]")}}
The constructor function that is used to create derived objects.
{{jsxref("ArrayBuffer.prototype")}}
Allows the addition of properties to all ArrayBuffer objects.

方法

{{jsxref("ArrayBuffer.isView", "ArrayBuffer.isView(arg)")}}
Returns true if arg is one of the ArrayBuffer views, such as typed array objects or a {{jsxref("DataView")}}. Returns false otherwise.
{{jsxref("ArrayBuffer.transfer", "ArrayBuffer.transfer(oldBuffer [, newByteLength])")}} {{experimental_inline}}
Returns a new ArrayBuffer whose contents are taken from the oldBuffer's data and then is either truncated or zero-extended by newByteLength.

ArrayBuffer 實例

所有的 ArrayBuffer 物件實例皆繼承自 {{jsxref("ArrayBuffer.prototype")}}.

屬性

{{page('zh-TW/Web/JavaScript/JavaScript_typed_arrays/ArrayBuffer/prototype','屬性')}}

方法

{{page('/zh-TW/docs/Web/JavaScript/JavaScript_typed_arrays/ArrayBuffer/prototype','方法')}}

{{jsxref("ArrayBuffer.slice()")}} {{non-standard_inline}}
Has the same functionality as {{jsxref("ArrayBuffer.prototype.slice()")}}.

範例

In this example, we create a 8-byte buffer with a {{jsxref("Global_Objects/Int32Array", "Int32Array")}} view referring to the buffer:

var buffer = new ArrayBuffer(8);
var view   = new Int32Array(buffer);

規範

Specification Status Comment
{{SpecName('Typed Array')}} {{Spec2('Typed Array')}} Superseded by ECMAScript 6.
{{SpecName('ES6', '#sec-arraybuffer-constructor', 'ArrayBuffer')}} {{Spec2('ES6')}} Initial definition in an ECMA standard. Specified that new is required.
{{SpecName('ESDraft', '#sec-arraybuffer-constructor', 'ArrayBuffer')}} {{Spec2('ESDraft')}}  

瀏覽器相容性

{{CompatibilityTable}}

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
Basic support 7.0 {{CompatVersionUnknown}} {{CompatGeckoDesktop("2")}} 10 11.6 5.1
ArrayBuffer() without new throws {{CompatUnknown}} {{CompatUnknown}} {{CompatGeckoDesktop("44")}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}
ArrayBuffer.slice() {{non-standard_inline}} {{CompatNo}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}
{{CompatNo}} {{CompatGeckoDesktop("53")}}
{{CompatNo}} {{CompatNo}} {{CompatUnknown}}
Feature Android Chrome for Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support 4.0 {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatGeckoMobile("2")}} 10 11.6 4.2
ArrayBuffer() without new throws {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatGeckoMobile("44")}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}
ArrayBuffer.slice() {{non-standard_inline}} {{CompatNo}} {{CompatNo}} {{CompatVersionUnknown}} {{CompatVersionUnknown}}
{{CompatNo}} {{CompatGeckoMobile("53")}}
{{CompatNo}} {{CompatNo}} {{CompatUnknown}}

相容性備註

Starting with ECMAScript 2015, ArrayBuffer constructors require to be constructed with a {{jsxref("Operators/new", "new")}} operator. Calling an ArrayBuffer constructor as a function without new, will throw a {{jsxref("TypeError")}} from now on.

var dv = ArrayBuffer(10);
// TypeError: calling a builtin ArrayBuffer constructor
// without new is forbidden
var dv = new ArrayBuffer(10);

參見