非常教程

JavaScript参考手册

TypedArray

typedArray.slice

slice()方法返回一个typed array的部分类型数组对象,数组内容采用浅拷贝方式. 方法采用与 Array.prototype.slice()相同的算法.类型数组是 typed array types成员中的一员 .

语法

typedarray.slice([begin[, end]])

参数

begin:起始位置可选从0开始的索引位置;负值索引, 表示与数组尾元素的偏移量.slice(-2) 表示提取数列中的末尾两个元素.如果没有设定起始位置,则将从开始位置开始截取。end:结束位置可选从零开始到尾元素前的索引值.slice 取出元素时包含起始节点,单不包含结束节点。例,slice(1,4) 表示读取第二个元素到第四个元素(元素索引位置:1, 2, and 3).负值索引, 表示与数组尾元素的偏移量。slice(2,-1) 表示取出数组中的第三个到最后一个之间的所有元素.如果没有设定结束位置,则将从开始位置截取到序列尾部。(typedarray.length).

返回值

包含取出元素的新的 typed array

描述

slice方法并不会改变原数组的内容,他只是返回从原数组中取出的元素的浅复制集合。

如何一个新元素被添加到任何一个数组中去,则另外一个数组不会发生变化。

示例

返回已存在类型数组的部分片段

var uint8 = new Uint8Array([1,2,3]);
uint8.slice(1);   // Uint8Array [ 2, 3 ]
uint8.slice(2);   // Uint8Array [ 3 ]
uint8.slice(-2);  // Uint8Array [ 2, 3 ]
uint8.slice(0,1); // Uint8Array [ 1 ]

Polyfill

由于没有名称为TypedArray的全局对象,因此必须在“根据需要”的基础上进行填充

// https://tc39.github.io/ecma262/#sec-%typedarray%.prototype.slice
if (!Uint8Array.prototype.slice) {
  Object.defineProperty(Uint8Array.prototype, 'slice', {
    value: Array.prototype.slice
  });
}

这不是一个完整的polyfill,因为它返回的是一个Array实例,而不是Uint8Array,所以它没有通常存在于TypedArray上的属性。

如果您需要支持真正过时的不支持的JavaScript引擎,Object.defineProperty最好不要填充Array.prototype方法,因为您无法使它们不可枚举。

规范

Specification

Status

Comment

ECMAScript 2015 (6th Edition, ECMA-262)The definition of '%TypedArray%.prototype.slice' in that specification.

Standard

Initial definition.

ECMAScript Latest Draft (ECMA-262)The definition of '%TypedArray%.prototype.slice' in that specification.

Living Standard

浏览器兼容性

Feature

Chrome

Firefox (Gecko)

Internet Explorer

Opera

Safari

Basic support

45

38 (38)

No support

No support

No support

Feature

Android

Chrome for Android

Firefox Mobile (Gecko)

IE Mobile

Opera Mobile

Safari Mobile

Basic support

No support

No support

38 (38)

No support

No support

No support

JavaScript

JavaScript 是一种高级编程语言,通过解释执行,是一门动态类型,面向对象(基于原型)的解释型语言。它已经由ECMA(欧洲电脑制造商协会)通过 ECMAScript 实现语言的标准化。它被世界上的绝大多数网站所使用,也被世界主流浏览器( Chrome、IE、FireFox、Safari、Opera )支持。JavaScript 是一门基于原型、函数先行的语言,是一门多范式的语言,它支持面向对象编程,命令式编程,以及函数式编程。它提供语法来操控文本、数组、日期以及正则表达式等,不支持 I/O,比如网络