首先,如果答案显而易见,并且/或很容易找到,我想请求借口。 我没有找到任何完整的答案。
问题很简单:
var array1 = Array().slice.call(arguments,1);
var array2 = Array.prototype.slice.call(arguments,1);
他们做同样的事情。 你能以这种方式做对象,日期,字符串等原型
答案 0 :(得分:1)
是的,您可以,因为每个实例都继承自其构造函数的原型。
即(new Array()).slice
(或更好,[].slice
)与Array.prototype.slice
的方法完全相同。
答案 1 :(得分:1)
第二种方法更好,因为您没有创建一个未使用的数组。使用第一种方法,您构建一个数组,然后使用动态原型链解析来定位它的切片方法,然后使用您的参数作为上下文call
。第二种方法直接访问slice
方法,因此您避免了对象创建和原型链解析,因此它更好。