首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >call与prototype.call的区别

call与prototype.call的区别
EN

Stack Overflow用户
提问于 2014-03-06 16:58:18
回答 2查看 47关注 0票数 0

在Javascript中,是否有理由更喜欢

这是:

代码语言:javascript
复制
[].forEach.call(...)

在这方面:

代码语言:javascript
复制
[].prototype.forEach.call(...)

。。?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-06 17:00:00

第一个是较短的,因此更容易阅读,并有可能防止水平滚动。

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

第三个应该是

代码语言:javascript
复制
Array.prototype.forEach.call(...)

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

票数 1
EN

Stack Overflow用户

发布于 2014-03-06 17:04:11

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

代码语言:javascript
复制
Array.prototype.forEach.call

现在,如果我们将其与[].forEach.call进行比较,区别在于,对于原型版本,您不会创建一个丢弃的数组对象。

这在实践中是否有任何不同,取决于你的具体情况。如果您重复这样做数百次或数千次,与直接通过原型调用函数相比,创建这些丢弃的数组对象会导致更高的内存使用量和更慢的GC清除速度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22231032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档