TypedArray

TypedArray对象表示底层的二进制数据缓存区的类数组视图,没有名为TypedArray的全局属性,也不存在直接可见的TypedArray构造器。 TypedArray仅是一个内部对象,以下全局对象皆由其继承而来

  • Int8Array
  • Uint8Array
  • Int16Array
  • Uint16Array
  • Int32Array
  • Uint32Array
  • Float32Array
  • Float64Array
 

继承层次

Object.prototype
 Function.prototype
  TypedArray

构造函数

ES6定义TypeArray构造器作为所有的类型化数组构造器(Int8Array,Int16Array等)的原型.该构造器不会直接暴露:没有全局的%TypedArray%和TypeArray属性.只能通过使用类似Object.getPrototypeOf(Int8Array.prototype)的方式进行访问.所有的类型化数组构造器(Int8Array,Int16Array等)都会继承TypeArray构造器的通用属性和方法.此外,所有的类型化数组原型(Int8Array.prototype,Int16Array.prototype等)的原型都以TypeArray.prototype作为原型.

TypedArray构造器自身不是特别有用.调用或在一个表达式中使用它都会抛出一个TypeError异常,除非在支持通过继承创建对象的JS引擎下运行.但直到现在还没有这样的JS引擎出现,因此TypeArray仅仅是对所有的类型化类构造器(Int8Array,Int16Array等)的方法和属性进行polyfill的时候比较有用.

语法

new TypedArray(length); 
new TypedArray(typedArray); 
new TypedArray(object); 
new TypedArray(buffer [, byteOffset [, length]]); 
 
以下皆是 TypedArray() : 

Int8Array(); 
Uint8Array(); 
Uint8ClampedArray();
Int16Array(); 
Uint16Array();
Int32Array(); 
Uint32Array(); 
Float32Array(); 
Float64Array();

参数

  • length
    当传入lengch参数时,一个内部数组缓冲区被创建,该缓存区的大小是传入的length乘以数组中每个元素的字节数,每个元素的值都为0.(译者注:每个元素的字节数是由具体的构造函数决定的,比如Int16Array的每个元素的字节数为2,Int32Array的每个元素的字节数为4)。
  • typedArray
    当传入一个包含任意类型元素的任意类型化数组对象(typedArray) (比如 Int32Array)作为参数时,typeArray被复制到一个新的类型数组。typeArray中的每个值会在复制到新的数组之前根据构造器进行转化.新的生成的类型化数组对象将会有跟传入的数组相同的length(译者注:比如原来的typeArray.length==2,那么新生成的数组的length也是2,只是数组中的每一项进行了转化)。
  • object
    当传入一个 object 作为参数时,如同通过 TypedArray.from() 方法一样创建一个新的类型数组。
  • buffer, byteOffset, length
    当传入arrayBuffer和可选参数byteOffset,可选参数length时,一个新的类型化数组视图将会被创建,该类型化数组视图用于呈现传入的ArrayBuffer实例。byteOffset和length指定类型化数组视图暴露的内存范围,如果两者都未传入,那么整个buffer都会被呈现,如果仅仅忽略length,那么buffer中偏移(byteOffset)后剩下的buffer将会被呈现.

属性

版本名称语法说明
ES6BYTES_PER_ELEMENTTypedArray.BYTES_PER_ELEMENT返回不同类型的数组对象的元素大小的数字值。
ES6lengthTypedArray.length表示 Promise 构造器的原型。
ES6nameTypedArray.name返回构造器的名称,例如“Int8Array”.
ES6TypedArray[Symbol.species]用于创建派生对象的构造函数函数.
ES6TypedArray.prototypeTypedArray.prototypeTypedArray的原型.

方法列表

版本名称语法说明
ES6fromTypedArray.from()使用类数组(array-like)或迭代对象创建一个新的类型化数组.参见 Array.from().
ES6ofTypedArray.of()通过可变数量的参数创建新的类型化数组.参见 Array.of()。

TypedArray.prototype

属性列表

版本名称语法说明
ES6constructortypedarrayObject.constructor使用类数组(array-like)或迭代对象创建一个新的类型化数组.参见 Array.from().
ES6buffertypedarrayObject.buffer 返回被格式化数组引用的ArrayBuffer. 创建时已被固化,因此是只读的.
ES6byteLengthtypedarrayObject.byteLength返回从ArrayBuffer读取的字节长度. 创建时已被固化,因此是只读的.
ES6byteOffsettypedarrayObject.byteOffset返回从ArrayBuffer读取时的字节偏移量.创建时已被固化,因此是只读的.
ES6lengthtypedarrayObject.length

方法列表

版本名称语法说明
ES6copyWithintypedarrayObject.copyWithin(target, start[, end = this.length])浅拷贝数组的部分元素到同一数组的不同位置,且不改变数组的大小,返回该数组。
ES6entriestypedarrayObject.entries()返回一个 Array Iterator 对象,该对象包含数组中每一个索引的键值对。
ES6everytypedarrayObject.every(callback[, thisObject])测试数组的所有元素是否都通过了指定函数的测试。
ES6filltypedarrayObject.fill(value[, start = 0[, end = this.length]])将一个数组中指定区间的所有元素的值, 都替换成或者说填充成为某个固定的值。
ES6filtertypedarrayObject.filter(callback[, thisObject])使用指定的函数测试所有元素,并创建一个包含所有通过测试的元素的新数组
ES6findtypedarrayObject.find(callback[, thisObject])返回一个满足提供的函数的测试的元素,若是没有满足的元素则返回undefined 。
ES6findIndextypedarrayObject.findIndex(callback[, thisObject])查找数组中某指定元素的索引, 如果找不到指定的元素, 则返回 -1。
ES6forEachtypedarrayObject.forEach(callback[, thisObject])对数组的每个元素执行一次提供的函数(回调函数)。
ES6indexOftypedarrayObject.indexOf(searchElement[, fromIndex = 0])返回数组中第一个等于指定值得元素的索引,如果找不到则返回-1
ES6jointypedarrayObject.join([separator = ',']);将数组中的所有元素连接成一个字符串. 参见 Array.prototype.join()。
ES6keystypedarrayObject.keys()返回一个新的包含数组索引的数组迭代器。
ES6lastIndexOftypedarrayObject.lastIndexOf(searchElement[, fromIndex = typedarrayObject.length])返回数组中最后一个等于指定值得元素的索引,如果找不到则返回-1。
ES6maptypedarrayObject.map(callback[, thisObject])创建一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组
ES6reducetypedarrayObject.reduce(callback[, initialValue])接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值。
ES6reduceRighttypedarrayObject.reduceRight(callback[, initialValue])接受一个函数作为累加器(accumulator),让每个值(从右到左,亦即从尾到头)缩减为一个值.(与 reduce() 的执行方向相反)。
ES6reversetypedarrayObject.reverse()颠倒数组中元素的位置。第一个元素会成为最后一个,最后一个会成为第一个
ES6settypedarrayObject.set(typedarrayObject [,offset])读取一个指定数组中的元素保存到格式化数组中。
ES6slicetypedarrayObject.slice([begin[, end]])浅复制(shallow copy)数组的一部分到一个新的数组,并返回这个新数组。
ES6sometypedarrayObject.some(callback[, thisObject])数组中只要有一个元素满足提供的测试函数的测试就返回true,否则返回false。
ES6sorttypedarrayObject.sort([compareFunction])对数组进行排序,并返回原数组(是改变原数组)
ES6subarraytypedarrayObject.subarray([begin [,end]])返回给定的起始和结束索引之间的元素组成的新的类型化数组
ES6valuestypedarrayObject.values()返回有数组中的元素组成的新的数组迭代对象。
ES6toLocaleStringtypedarrayObject.toLocaleString([locales [, options]]);返回一个将数组中的每个元素本地化后组成的字符串。
ES6toStringtypedarrayObject.toString()返回一个由数组中的每个元素字符串化后组成的字符串。
ES6[@@iterator]typedarrayObject[Symbol.iterator]()返回一个包含数组中每个元素的新的数组迭代对象

TypedArray实例

继承层次

Object.prototype
 Array.prototype
  TypedArray实例