[] .slice vs Array.prototype.slice

时间:2015-02-21 02:49:46

标签: javascript arrays

[] .slice与Array.prototype.slice有什么区别?

在搜索时,我发现Array.prototype.slice比[.slice at]更快 jsperf.com/array-prototype-slice-vs-slice

为什么Array.prototype.slice比[。.llice更快?

我查了[].slice or Array.prototype.slice。更生动的描述会有所帮助。

由于

2 个答案:

答案 0 :(得分:4)

  

为什么Array.prototype.slice比[。.llice更快?

[]Array的一个实例,因此额外的开销很可能是实例化对象所需的时间。

答案 1 :(得分:4)

.slice()是一个数组原型方法。它在Array原型对象Array.prototype上定义,这意味着Array.prototype.slice是引用它的直接方式。

数组实例(如[])继承自Array原型,因此[].slice会解析为Array.prototype.slice

如果您需要重复使用此方法,一个好方法是将其引用放在最外层范围内的变量中:

var slice = Array.prototype.slice;

然后通过.call().apply()来电使用此变量,例如

slice.call( someObj )