Javascript call和prototype.call之间的区别

Javascript call和prototype.call之间的区别,javascript,Javascript,在Javascript中,是否有理由选择 这: 在这方面: [].prototype.forEach.call(...) 第一个较短,因此更易于阅读,并可能防止水平滚动 第二个是bug,因为没有[].prototype(你是说[].constructor.prototype?) 第三个是 Array.prototype.forEach.call(...) 这一个更直接,理论上更快,因为你从第一个得到的是间接的属性,事实上,它附在原型上。第二个例子不起作用,所以如果我们把它改成 Array.

在Javascript中,是否有理由选择

这:

在这方面:

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

第一个较短,因此更易于阅读,并可能防止水平滚动

第二个是bug,因为没有
[].prototype
(你是说
[].constructor.prototype
?)

第三个是

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

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

第二个例子不起作用,所以如果我们把它改成

Array.prototype.forEach.call
现在,如果我们将其与
[].forEach.call
进行比较,区别在于原型版本并没有创建一次性数组对象


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

使用此方法的链更短。它们都引用相同的函数。如果您使用的是
Array
(而不是
[]
),那么您必须使用
Array.prototype.forEach
@Ian您错过了一些东西:没有
[].prototype
@Ian谢谢!(我没意识到!)@dystroy哇,完全沉浸在其中
Array.prototype.forEach.call