aboutsummaryrefslogtreecommitdiff
path: root/files/vi/web/javascript/reference/global_objects/arraybuffer/index.html
blob: 1cf512233b86b829212c7beabbf1ae632f18617d (plain)
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
---
title: ArrayBuffer
slug: Web/JavaScript/Reference/Global_Objects/ArrayBuffer
translation_of: Web/JavaScript/Reference/Global_Objects/ArrayBuffer
---
<div>{{JSRef}}</div>

<div>Đối tượng <strong><code>ArrayBuffer</code></strong> được sử dụng để biểu diễn một bộ đệm dữ liệu nhị phân nguyên gốc có độ dài cố định. Ta không thể trực tiếp thay đổi nội dung của một <code>ArrayBuffer</code>; mà thay vào đó là tạo ra một <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray">typed array objects</a> hoặc một đối tượng {{jsxref("DataView")}} đại diện cho bộ đệm với một định dạng cụ thể, và sử dụng nó để đọc và ghi nội dung của bộ đệm.</div>

<div> </div>

<div>{{EmbedInteractiveExample("pages/js/arraybuffer-constructor.html")}}</div>



<h2 id="Cú_pháp">Cú pháp</h2>

<pre class="syntaxbox">new ArrayBuffer(length)
</pre>

<h3 id="Tham_số">Tham số</h3>

<dl>
 <dt><code>length</code></dt>
 <dd>Kích thước tính theo bytes của bộ đệm mảng cần tạo</dd>
</dl>

<h3 id="Giá_trị_trả_về">Giá trị trả về</h3>

<p><code><font face="Verdana, arial, x-locale-body, sans-serif"><span style="background-color: #ffffff;">Là một </span></font>ArrayBuffer</code> mới có kích thước được chỉ định. Nội dung khởi tạo là 0.</p>

<h3 id="Ngoại_lệ">Ngoại lệ</h3>

<p>Lỗi {{jsxref("RangeError")}} sẽ được đưa ra nếu <code>length</code> lớn hơn  {{jsxref("Number.MAX_SAFE_INTEGER")}} (&gt;= 2 ** 53) hoặc mang giá trị âm.</p>

<h2 id="Mô_tả">Mô tả</h2>

<p>Hàm dựng <code>ArrayBuffer</code> tạo ra một  <code>ArrayBuffer</code>  dựa trên chiều dài đã cho tính theo byte</p>

<h3 id="Lấy_một_mảng_đệm_từ_dữ_liệu_hiện_có">Lấy một mảng đệm từ dữ liệu hiện có</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">From a Base64 string</a></li>
 <li><a href="/en-US/docs/Web/API/FileReader#readAsArrayBuffer()">From a local file</a></li>
</ul>

<h2 id="Thuộc_tính">Thuộc tính</h2>

<dl>
 <dt><code>ArrayBuffer.length</code></dt>
 <dd>Thuộc tính chiều dài của hàm dựng của <code>ArrayBuffer</code> có giá trị là 1.</dd>
 <dt>{{jsxref("ArrayBuffer.@@species", "get ArrayBuffer[@@species]")}}</dt>
 <dd>Hàm dựng để tạo ra các đối tượng kế thừa</dd>
 <dt>{{jsxref("ArrayBuffer.prototype")}}</dt>
 <dd>Cho phép bổ sung các thuộc tính cho tất cả các đối tượng <code>ArrayBuffer</code> .</dd>
</dl>

<h2 id="Phương_thức">Phương thức</h2>

<dl>
 <dt>{{jsxref("ArrayBuffer.isView", "ArrayBuffer.isView(arg)")}}</dt>
 <dd>Trả về <code>true</code> nếu tham số <code>arg</code> là một trong các views của ArrayBuffer, ví dụ như <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray">typed array objects</a> hoặc {{jsxref("DataView")}}. Trả về <code>false</code> trong trường hợp ngược lại.</dd>
 <dt>{{jsxref("ArrayBuffer.transfer", "ArrayBuffer.transfer(oldBuffer [, newByteLength])")}} {{experimental_inline}}</dt>
 <dd>
 <div class="line" id="file-arraybuffer-transfer-LC6">Trả về một <code>ArrayBuffer</code> nội dung lấy từ dữ liệu của <code>oldBuffer</code> và sau đó được cắt bớt hoặc không mở rộng thông qua <code>newByteLength</code>.</div>
 </dd>
</dl>

<h2 id="Thực_thể">Thực thể</h2>

<p>Tất cả các thực thể của  <code>ArrayBuffer</code> đều kế thừa từ {{jsxref("ArrayBuffer.prototype")}}.</p>

<h3 id="Thuộc_tính_2">Thuộc tính</h3>

<p>{{page('en-US/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/prototype','Properties')}}</p>

<h3 id="Phương_thức_2">Phương thức</h3>

<p>{{page('en-US/Web/JavaScript/Reference/Global_Objects/ArrayBuffer/prototype','Methods')}}</p>

<dl>
 <dt>{{jsxref("ArrayBuffer.slice()")}} {{non-standard_inline}}</dt>
 <dd>Cùng chức năng như {{jsxref("ArrayBuffer.prototype.slice()")}}.</dd>
</dl>

<h2 id="Ví_dụ">Ví dụ</h2>

<p>Ví dụu sau tạo ra một vùng đệm 8 byte với view của {{jsxref("Global_Objects/Int32Array", "Int32Array")}} ?trỏ đến bộ đệm</p>

<pre class="brush: js">var buffer = new ArrayBuffer(8);
var view   = new Int32Array(buffer);</pre>

<h2 id="Đặc_tả">Đặc tả</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">Đặc tả</th>
   <th scope="col">Trạng thái</th>
   <th scope="col">Ghi chú</th>
  </tr>
  <tr>
   <td>{{SpecName('Typed Array')}}</td>
   <td>{{Spec2('Typed Array')}}</td>
   <td>?Thay thế bởi ECMAScript 6.</td>
  </tr>
  <tr>
   <td>{{SpecName('ES6', '#sec-arraybuffer-constructor', 'ArrayBuffer')}}</td>
   <td>{{Spec2('ES6')}}</td>
   <td>Initial definition in an ECMA standard. Specified that <code>new</code> is required.</td>
  </tr>
  <tr>
   <td>{{SpecName('ESDraft', '#sec-arraybuffer-constructor', 'ArrayBuffer')}}</td>
   <td>{{Spec2('ESDraft')}}</td>
   <td> </td>
  </tr>
 </tbody>
</table>

<h2 id="Trình_duyệt_tương_thích">Trình duyệt tương thích</h2>



<p>{{Compat("javascript.builtins.ArrayBuffer")}}</p>

<h2 id="Ghi_chú_thêm_về_tính_tương_thích">Ghi chú thêm về tính tương thích</h2>

<p>Với ECMAScript 2015, hàm dựng <code>ArrayBuffer</code> cần được khởi tạo với {{jsxref("Operators/new", "new")}}. Việc gọi một hàm dựng <code>ArrayBuffer</code> nhưng một hàm thông thường không có toán tử <code>new</code> sẽ gây ra lỗi {{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="Tham_khảo_thêm">Tham khảo thêm</h2>

<ul>
 <li><a href="/en-US/docs/Web/JavaScript/Typed_arrays">JavaScript typed arrays</a></li>
 <li>{{jsxref("SharedArrayBuffer")}}</li>
</ul>