Files
javascript-tutorial/docs/bom/arraybuffer.md
2018-06-10 15:01:31 +08:00

78 lines
3.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ArrayBuffer 对象Blob 对象
## ArrayBuffer 对象
ArrayBuffer 对象表示一段二进制数据用来模拟内存里面的数据。通过这个对象JavaScript 可以读写二进制数据。
这个对象是 ES6 才写入标准的普通的网页编程用不到它为了教程体系的完整下面只提供一个简略的介绍详细介绍请看《ES6 标准入门》里面的章节。
浏览器原生提供`ArrayBuffer()`构造函数,用来生成实例。它接受一个整数作为参数,表示这段二进制数据占用多少个字节。
```javascript
var buffer = new ArrayBuffer(8);
```
上面代码中,实例对象`buffer`占用8个字节。
ArrayBuffer 对象有实例属性`length``byteLength`,都表示当前实例占用的内存长度(单位字节)。
```javascript
var buffer = new ArrayBuffer(8);
buffer.length // 8
buffer.length // 8
```
ArrayBuffer 对象有实例方法`slice()`用来复制一部分内存。它接受两个整数参数分别表示复制的开始位置从0开始和结束位置复制时不包括结束位置如果省略第二个参数则表示一直复制到结束。
```javascript
var buf1 = new ArrayBuffer(8);
var buf2 = buf1.slice(0);
```
上面代码表示复制原来的实例。
## Blob 对象
Blob 对象表示一个二进制文件的数据内容,比如一个图片文件的内容就可以通过 Blob 对象读写。它通常用来读写文件。
浏览器原生提供`Blob()`构造函数,用来生成实例对象。
```javascript
new Blob(array [, options])
```
`Blob`构造函数接受两个参数。第一个参数是数组,成员是字符串或二进制对象,表示新生成的`Blob`实例对象的内容;第二个参数是可选的,是一个配置对象,目前只有一个属性`type`,它的值是一个字符串,表示数据的 MIME 类型,默认是空字符串。
```javascript
var htmlFragment = ['<a id="a"><b id="b">hey!</b></a>'];
var myBlob = new Blob(htmlFragment, {type : 'text/html'});
```
上面代码中,实例对象`myBlob`包含的是字符串。生成实例的时候,数据类型指定为`text/html`
下面是另一个例子Blob 保存 JSON 数据。
```javascript
var obj = { hello: 'world' };
var blob = new Blob([ JSON.stringify(obj) ], {type : 'application/json'});
```
`Blob`具有两个实例属性`size``type`,分别返回数据的大小和类型。
```javascript
var htmlFragment = ['<a id="a"><b id="b">hey!</b></a>'];
var myBlob = new Blob(htmlFragment, {type : 'text/html'});
myBlob.size // 32
myBlob.type // "text/html"
```
`Blob`具有一个实例方法`slice`,用来拷贝原来的数据,返回的也是一个`Blob`实例。
```javascript
myBlob.slice(startend, contentType)
```
`slice`方法有三个参数都是可选的。它们依次是起始的字节位置默认为0、结束的字节位置默认为`size`属性的值,该位置本身将不包含在拷贝的数据之中)、新实例的数据类型(默认为空字符串)。