【问题标题】:[].slice vs Array.prototype.slice[].slice 与 Array.prototype.slice
【发布时间】:2015-02-21 02:49:45
【问题描述】:

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

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

为什么 Array.prototype.slice 比 [].slice 快?

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

谢谢

【问题讨论】:

标签: javascript arrays


【解决方案1】:

为什么 Array.prototype.slice 比 [].slice 快?

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

【讨论】:

【解决方案2】:

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

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

如果你需要重复使用这个方法,一个好的方法是把它的引用放到你最外层作用域的一个变量中:

var slice = Array.prototype.slice;

然后通过.call().apply() 调用使用这个变量,例如

slice.call( someObj )

【讨论】:

  • 感谢您澄清差异,我主要是在寻找性能影响背后的原因。 +1
猜你喜欢
  • 2012-02-18
  • 1970-01-01
  • 1970-01-01
  • 2020-12-31
  • 2016-08-27
  • 1970-01-01
  • 2014-03-10
  • 2020-01-04
  • 1970-01-01
相关资源
最近更新 更多