[] .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。更生动的描述会有所帮助。
由于
答案 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 )