Array()和Array.prototype用法

时间:2012-05-14 16:03:55

标签: javascript

首先,如果答案显而易见,并且/或很容易找到,我想请求借口。 我没有找到任何完整的答案。

问题很简单:

var array1 = Array().slice.call(arguments,1);
var array2 = Array.prototype.slice.call(arguments,1);

他们做同样的事情。 你能以这种方式做对象,日期,字符串等原型

2 个答案:

答案 0 :(得分:1)

是的,您可以,因为每个实例都继承自其构造函数的原型。

(new Array()).slice(或更好,[].slice)与Array.prototype.slice的方法完全相同。

答案 1 :(得分:1)

第二种方法更好,因为您没有创建一个未使用的数组。使用第一种方法,您构建一个数组,然后使用动态原型链解析来定位它的切片方法,然后使用您的参数作为上下文call。第二种方法直接访问slice方法,因此您避免了对象创建和原型链解析,因此它更好。