call和prototype.call之间的区别

时间:2014-03-06 16:58:18

标签: javascript

在Javascript中,是否有理由选择

这样:

[].forEach.call(...)

对此:

[].prototype.forEach.call(...)

..?

2 个答案:

答案 0 :(得分:1)

第一个更短,因此更容易阅读并可能阻止水平滚动。

第二个是错误的,因为没有[].prototype(你的意思是[].constructor.prototype吗?)

第三个是

Array.prototype.forEach.call(...)

这个更直接,理论上更快,因为你得到的第一个是间接的属性,实际上是附加到原型。

答案 1 :(得分:0)

第二个例子不起作用,所以如果我们纠正它......

Array.prototype.forEach.call

现在,如果我们将其与[].forEach.call进行比较,不同之处在于使用原型版本,您不会创建一次性数组对象。

这在实践中是否有所不同取决于您的具体情况。如果您反复进行数百次或数千次,与直接通过原型调用函数相比,创建这些一次性数组对象可能会导致更高的内存使用量和更慢的GC扫描。