第一个
(function() {
var slice = Array.prototype.slice,
aArguments = slice.apply(arguments);
})(10, 20, 30);
第二个
(function() {
var aArguments = [].slice.apply(arguments);
})(10, 20, 30);
有什么区别?
只有速度?
答案 0 :(得分:2)
在第二个版本中,您正在创建一个Array对象。
在第一个版本中,没有创建其他对象 - 您直接引用Array原型上的函数并使用它。
答案 1 :(得分:1)
获得相同.slice()
方法的不同方法。所有Array.prototype
个对象都可以使用Array
上的方法。
第一个需要更多对象属性查找。
第二个需要创建一个新的数组
性能考虑可能会因实现而异,并且可能很小。
请注意,如果您想要所有参数,也可以执行此操作...
var aArguments = Array.apply(null, arguments);
答案 2 :(得分:-1)
性能差异可以忽略不计。
如果您想确切了解性能差异,请查看this performance test的结果,并根据需要自行运行。