今天,我读了Mark Needham撰写的一篇很棒的博客文章,标题为JavaScript:混淆了'call'和'apply' 。 不久前,我为《 技术时报》通讯撰写了一篇有关JavaScript arguments
对象的文章。 之所以称为arguments
:JavaScript奇数,是因为它具有各种有趣的行为,这些知识很有用。 我意识到,尽管在那篇文章中我同时使用了call
和apply
,但是我并没有谈论其中的区别。
嗯,这实际上很简单。 首先,这两种方法都将thisArg
作为第一个参数。 这是为函数提供上下文的参数。 它确定在调用或应用的函数内部的JavaScript关键字this
的值。 唯一的区别是, call
方法要求分别指定参数。 apply
方法将它们作为数组。 如果您看到以下语法,则更加清楚:
function.call(thisArg[, argument1[, argument2[, ...]]]);
function.apply(thisArg[, argumentArray]);
因此,如果您在JavaScript中使用arguments
对象,则可以使用apply方法调用任何函数,只需将现有的arguments
对象作为数组参数传入即可。
希望对您有用!
Sudhamshu的专题图片 。 你能算出意义吗?
From: https://www.sitepoint.com/whats-the-difference-between-function-call-and-function-apply/