首页 > JavaScript > 调用和应用有什么区别?

调用和应用有什么区别?

上一篇 下一篇

使用函数和调用函数有什么区别?Function.prototype.apply()Function.prototype.call()

var func = function() {
  alert('hello!');
};

func.apply();func.call();

上述两种方法之间是否存在性能差异?什么时候最好使用,反之亦然?callapply

分割线

网友回答:

K·斯科特·艾伦(K. Scott Allen)对此事有一篇很好的文章。

基本上,它们在如何处理函数参数方面有所不同。

apply() 方法与 call() 相同,只是 apply() 需要一个数组作为第二个参数。数组表示目标方法的参数。

所以:

// assuming you have f
function f(message) { ... }
f.call(receiver, "test");
f.apply(receiver, ["test"]);

分割线

网友回答:

不同之处在于允许您将函数作为数组调用; 需要显式列出参数。一个有用的助记符是A 代表 rray 和 C 代表 comma”。applyargumentscall

请参阅 MDN 关于申请和调用的文档。

伪语法:

theFunction.apply(valueForThis, arrayOfArgs)

theFunction.call(valueForThis, arg1, arg2, ...)

从 ES6 开始,数组也可以与函数一起使用,您可以在此处查看兼容性。spreadcall

示例代码:

function theFunction(name, profession) {
    console.log("My name is " + name + " and I am a " + profession +".");
}
theFunction("John", "fireman");
theFunction.apply(undefined, ["Susan", "school teacher"]);
theFunction.call(undefined, "Claude", "mathematician");
theFunction.call(undefined, ...["Matthew", "physicist"]); // used with the spread operator

分割线

网友回答:

要回答有关何时使用每个函数的部分,如果您不知道将要传递的参数数量,或者它们已经在数组或类似数组的对象(例如转发您自己的参数的对象)中使用。否则使用,因为不需要将参数包装在数组中。applyargumentscall

f.call(thisObject, a, b, c); // Fixed number of arguments

f.apply(thisObject, arguments); // Forward this function's arguments

var args = [];
while (...) {
    args.push(some_value());
}
f.apply(thisObject, args); // Unknown number of arguments

当我不传递任何参数(如您的示例)时,我更喜欢,因为我正在调用该函数。 意味着您正在将该函数应用于(不存在的)参数。callapply

不应该有任何性能差异,除非您使用参数并将其包装在数组中(例如 而不是 )。我还没有测试过它,所以可能会有所不同,但它会非常特定于浏览器。如果您还没有数组中的参数,则可能会更快,如果您这样做,则速度更快。applyf.apply(thisObject, [a, b, c])f.call(thisObject, a, b, c)callapply

模板简介:该模板名称为【调用和应用有什么区别?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【JavaScript】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 276次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 02-18
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
微信文章 单页式简历模板 微信图片 企业网站 html5 自适应 响应式 微信模板 微信素材 微信公众平台
您可能会喜欢的其他模板