1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
|
---
title: ArrayBuffer
slug: Web/JavaScript/Reference/Global_Objects/ArrayBuffer
tags:
- ArrayBuffer
- JavaScript
- Konstruktor
- TypedArrays
translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer
original_slug: Web/JavaScript/Referencje/Obiekty/ArrayBuffer
---
<div>{{JSRef}}</div>
<p>Objekt<strong> <code>ArrayBuffer</code></strong> reprezentuje buffer z surowymi danymi binarnymi o niezmiennej długości. Nie możesz bezpośrednio wpływać na zawartość obiektu <code><strong>ArrayBuffer</strong></code>, możesz natomiast stworzyć jeden z obiektów<code> <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray">typedArray</a></code> lub obiekt {{jsxref("DataView")}} reprezentujący buffer w specjalnym formacie i używać tego obiektu do odczytu oraz zapisu treści buffera.</p>
<h2 id="Składnia">Składnia</h2>
<pre class="syntaxbox">new ArrayBuffer(length)
</pre>
<h3 id="Parametry">Parametry</h3>
<dl>
<dt>długość<code>(length)</code></dt>
<dd>Rozmiar, w bajtach, tworzony z bufferu tablicy (array buffer).</dd>
</dl>
<h3 id="Wartość_zwrócona">Wartość zwrócona</h3>
<p>Nowy obiekt <code>ArrayBuffer</code> o określonym rozmiarze. Jego wartości początkowe wynoszą 0.</p>
<h3 id="Wyjątki">Wyjątki</h3>
<p>{{jsxref("RangeError")}} pojawi się, jeśli długość (<code>length</code>) jest większa niż {{jsxref("Number.MAX_SAFE_INTEGER")}} (>= 2 ** 53) lub ujemna.</p>
<h2 id="Opis">Opis</h2>
<p>Konstruktor <code>ArrayBuffer</code> tworzy nowy <code>ArrayBuffer </code>z podanej długości (<code>length</code>) w bajtach.</p>
<h3 id="Otrzymywanie_bufferu_tablicy_z_istniejących_danych">Otrzymywanie bufferu tablicy z istniejących danych</h3>
<ul>
<li><a href="/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#Appendix.3A_Decode_a_Base64_string_to_Uint8Array_or_ArrayBuffer">ze stringa Base64</a></li>
<li><a href="/en-US/docs/Web/API/FileReader#readAsArrayBuffer()">z lokalnego pliku</a></li>
</ul>
<h2 id="Właściwości">Właściwości</h2>
<dl>
<dt><code>ArrayBuffer.length</code></dt>
<dd>Właściwość długości konstruktura <code>ArrayBuffer</code>, której wartość wynosi 1.</dd>
<dt>{{jsxref("ArrayBuffer.@@species", "get ArrayBuffer[@@species]")}}</dt>
<dd>Funkcja konstruktora jest używana do tworzenia dostarczanych obiektów.</dd>
<dt>{{jsxref("ArrayBuffer.prototype")}}</dt>
<dd>Pozwala dodać właściwości do wszystkich obiektów <code>ArrayBuffer</code>.</dd>
</dl>
<h2 id="Metody">Metody</h2>
<dl>
<dt>{{jsxref("ArrayBuffer.isView", "ArrayBuffer.isView(arg)")}}</dt>
<dd>Zwraca <code>true</code>, jeśli <code>arg</code> jest jednym z widoków <code>ArrayBuffer</code>, jak obiekty <code>typedArray</code> lub {{jsxref("DataView")}}. W innych przypadkach zwraca <code>false</code>.</dd>
<dt>{{jsxref("ArrayBuffer.transfer", "ArrayBuffer.transfer(oldBuffer [, newByteLength])")}} {{experimental_inline}}</dt>
<dd>
<div class="line" id="file-arraybuffer-transfer-LC6">Zwraca nowy <code>ArrayBuffer</code>, którego zawartości są pobrane z danych <code>oldBuffer</code>. Następnie zostaje skrócony lub przedłużony od 0 przez <code>newByteLength</code>.</div>
</dd>
</dl>
<h2 id="Instancje_ArrayBuffer"><code>Instancje ArrayBuffer</code></h2>
<p>Wszystkie instancje <code>ArrayBuffer </code>dziedziczą z {{jsxref("ArrayBuffer.prototype")}}.</p>
<h3 id="Właściwości_2">Właściwości</h3>
<p>{{page('en-US/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/prototype','Properties')}}</p>
<h3 id="Metody_2">Metody</h3>
<p>{{page('en-US/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/prototype','Methods')}}</p>
<dl>
<dt>{{jsxref("ArrayBuffer.slice()")}} {{non-standard_inline}}</dt>
<dd>Posiada tę samą funkcjonalność, jak {{jsxref("ArrayBuffer.prototype.slice()")}}.</dd>
</dl>
<h2 id="Przykłady">Przykłady</h2>
<p>W niniejszym przykładzie tworzymy 8-bajtowy buffer z widokiem {{jsxref("Global_Objects/Int32Array", "Int32Array")}} odnoszącym się do buffera:</p>
<pre class="brush: js">var buffer = new ArrayBuffer(8);
var view = new Int32Array(buffer);</pre>
<h2 id="Specyfikacje">Specyfikacje</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Specyfikacja</th>
<th scope="col">Status</th>
<th scope="col">Komentarz</th>
</tr>
<tr>
<td>{{SpecName('Typed Array')}}</td>
<td>{{Spec2('Typed Array')}}</td>
<td>Zastępiony przez ECMAScript 6.</td>
</tr>
<tr>
<td>{{SpecName('ES6', '#sec-arraybuffer-constructor', 'ArrayBuffer')}}</td>
<td>{{Spec2('ES6')}}</td>
<td>Definicja początkowa w standardzie ECMA. Zgłasza, że wymagany jest <code>new</code>.</td>
</tr>
<tr>
<td>{{SpecName('ESDraft', '#sec-arraybuffer-constructor', 'ArrayBuffer')}}</td>
<td>{{Spec2('ESDraft')}}</td>
<td> </td>
</tr>
</tbody>
</table>
<h2 id="Kompatybilność_z_przeglądarkami">Kompatybilność z przeglądarkami</h2>
<p>{{CompatibilityTable}}</p>
<div id="compat-desktop">
<table class="compat-table">
<tbody>
<tr>
<th>Cecha</th>
<th>Chrome</th>
<th>Firefox (Gecko)</th>
<th>Internet Explorer</th>
<th>Opera</th>
<th>Safari</th>
</tr>
<tr>
<td>Wsparcie podstawowe</td>
<td>7.0</td>
<td>{{CompatGeckoDesktop("2")}}</td>
<td>10</td>
<td>11.6</td>
<td>5.1</td>
</tr>
<tr>
<td><code>ArrayBuffer()</code> bez odsyłacza <code>new</code></td>
<td>{{CompatUnknown}}</td>
<td>{{CompatGeckoDesktop("44")}}</td>
<td>{{CompatUnknown}}</td>
<td>{{CompatUnknown}}</td>
<td>{{CompatUnknown}}</td>
</tr>
<tr>
<td><code>ArrayBuffer.slice()</code> {{non-standard_inline}}</td>
<td>{{CompatNo}}</td>
<td>{{CompatVersionUnknown}}<br>
{{CompatNo}} {{CompatGeckoDesktop("53")}}</td>
<td>{{CompatNo}}</td>
<td>{{CompatNo}}</td>
<td>{{CompatUnknown}}</td>
</tr>
</tbody>
</table>
</div>
<div id="compat-mobile">
<table class="compat-table">
<tbody>
<tr>
<th>Cecha</th>
<th>Android</th>
<th>Chrome for Android</th>
<th>Firefox Mobile (Gecko)</th>
<th>IE Mobile</th>
<th>Opera Mobile</th>
<th>Safari Mobile</th>
</tr>
<tr>
<td>Wsparcie podstawowe</td>
<td>4.0</td>
<td>{{CompatVersionUnknown}}</td>
<td>{{CompatGeckoMobile("2")}}</td>
<td>10</td>
<td>11.6</td>
<td>4.2</td>
</tr>
<tr>
<td><code>ArrayBuffer()</code> bez odsyłacza <code>new</code></td>
<td>{{CompatUnknown}}</td>
<td>{{CompatUnknown}}</td>
<td>{{CompatGeckoMobile("44")}}</td>
<td>{{CompatUnknown}}</td>
<td>{{CompatUnknown}}</td>
<td>{{CompatUnknown}}</td>
</tr>
<tr>
<td><code>ArrayBuffer.slice()</code> {{non-standard_inline}}</td>
<td>{{CompatNo}}</td>
<td>{{CompatNo}}</td>
<td>{{CompatVersionUnknown}}<br>
{{CompatNo}} {{CompatGeckoMobile("53")}}</td>
<td>{{CompatNo}}</td>
<td>{{CompatNo}}</td>
<td>{{CompatUnknown}}</td>
</tr>
</tbody>
</table>
</div>
<h2 id="Zapis_kompatybilny">Zapis kompatybilny</h2>
<p>Od ECMAScript 2015 kontruktory <code>ArrayBuffer</code> muszą być tworzone poprzez operator {{jsxref("Operators/new", "new")}}. Wywoływanie kontruktora ArrayBuffer jako funkcji bez <code>new</code> zaskutkuje od teraz pojawieniem się {{jsxref("TypeError")}}.</p>
<pre class="brush: js example-bad">var dv = ArrayBuffer(10);
// TypeError: calling a builtin ArrayBuffer constructor
// without new is forbidden</pre>
<pre class="brush: js example-good">var dv = new ArrayBuffer(10);</pre>
<h2 id="Zobacz_również">Zobacz również</h2>
<ul>
<li><a href="/en-US/docs/Web/JavaScript/Typed_arrays">JavaScript typed arrays</a></li>
<li>{{jsxref("SharedArrayBuffer")}}</li>
</ul>
|