常见问题当前位置:天恒娱乐 > 常见问题 > >

JavaScript中的ArrayBuffer详细介绍

  

[JavaScript,ArrayBuffer]JavaScript中的ArrayBuffer详细介绍

  

相信每一个 javascript 学习者,都会去了解 JS 的各种基本数据类型,数组就是数据的组合,这是一个很基本也十分简单的概念,他的内容没多少,学好它也不是件难事情。但是本文着重要介绍的并不是我们往常看到的 Array,而是 ArrayBuffer。

  

  

我写的很多东西都是因为要完成某些特定的功能而刻意总结的,可以算是备忘,本文也是如此!前段时间一直在研究 Web Audio API 以及语音通信相关的知识,内容侧重于音频流在 AudioContext 各个节点之间的流动情况,而现在要摸清楚音频到流底是个什么样的数据格式,所以对 ArrayBuffer 的研究就显得格外重要了。

  

  

Array 在内存中的堆栈模型  

  

Array 的获取  

  

Javascript 中如何产生 Array:  
   代码如下:

  
  [element0, element1, ..., elementN]  
  new Array(element0, element1, ..., elementN)  
  new Array(arrayLength)  
  
  

  

直接定义,或者通过构造函数创建一个 Array,当然也可以使用其他的手段:  

  

代码如下:

  
  "array".split("");  
  "array".match(/a|r/g);  
  
  

  

等等,方式有很多。但是 Array 内部是个什么样的结构,恐怕很多人还不是很清楚。

  

  

堆栈模型  

  

在数组中我们可以放很多不同数据类型的数据,如:  
   代码如下:

  
  var arr = [21, "李靖", new Date(), function(){}, , null];  
  
  

  

上面这个数组中一次放入了 数字、字符串、对象、函数、undefined 和 null,对于上面的数据接口我们可以具象的描述下:  
   代码如下:

  
  栈  
  +---------+ 堆  
  | 21 | +-------------------+  
  +---------+ | |  
  | "李靖" | | |  
  +---------+ | +--------+ |  
  | [refer] |----------->| Object | |  
  +---------+ | +--------+ |  
  | [refer] |----------------->+--------+ |  
  +---------+ | |function| |  
  |undefined| | +--------+ |  
  +---------+ | |  
  | null | +-------------------+  
  +---------+ Created By Barret Lee  
  
  

  

JavaScript 的数据类型分为两种,一种是值类型,一种是引用类型,常见的引用类型有 Object 和 Array,数组的储存模型中,如果是诸如 Number、String 之类的值类型数据会被直接压入栈中,而引用类型只会压入对该值的一个索引,用 C 语言的概念来解释就是只保存了数据的指针,这些数据是储存在堆中的某块区间中。栈堆并不是独立的,栈也可以在堆中存放。

  

  

好了,对 Array 的说明就到这里,下面具体说说 ArrayBuffer 的相关知识。

  

  

ArrayBuffer  

  

web 是个啥玩意儿,web 要讨论的最基本问题是什么?我觉得有两点,一个是数据,一个是数据传输,至于数据的展示,纷繁复杂,这个应该是 web 上层的东西。而本文要讨论的 ArrayBuffer 就是最基础的数据类型,甚至不能称之为数据类型,它是一个数据容易,需要通过其他方式来读写。

  

  

官方点的定义:  

  

The ArrayBuffer is a data type that is used to represent a generic, fixed-length binary data buffer. You can't directly manipulate the contents of an ArrayBuffer; instead, you create an ArrayBufferView object which represents the buffer in a specific format, and use that to read and write the contents of the buffer.

  
  表示二进制数据的原始缓冲区,该缓冲区用于存储各种类型化数组的数据。 无法直接读取或写入 ArrayBuffer,但可根据需要将其传递到类型化数组或 DataView 对象 来解释原始缓冲区。

  

  

他是一个二进制数据的原始缓冲区,虽然 JavaScript 是弱类型语言,但是他本身是对数据的类型和大小都有限制的,我们需要通过某种数据结构将缓冲区的内容有序的读取出来(写进去)。

  

  

原始缓冲区的创建  

  

通过 ArrayBuffer 这个构造函数可以创建一个原始缓冲区:   (责任编辑:admin)

上一篇:天恒娱乐:深入理解JavaScript系列(18):面向对象

下一篇:天恒娱乐平台:jquery分页插件jquery.pagination.js实现

推荐内容

  • 共3页:
  • 上一页
  • 1
  • 2
  • 3
  • 下一页