使用 call 和 apply 进行函数调用
调用函数时,程序员经常会遇到使用 Function.prototype.apply() 或 Function 的选项.prototype.call()。本文探讨了这两种方法的区别和用例。
apply() 与 call()
根本区别在于它们如何处理函数参数:
语法
Method | Syntax |
---|---|
apply() | function.apply(thisArg, [arg1, arg2, ...]) |
call() | function.call(thisArg, arg1, arg2, ...) |
助记符
要记住区别:
使用案例
性能注意事项
两种方法具有相似的性能特征。在 ES6 及更高版本中,扩展运算符 (...) 可以与 call() 一起使用,为 apply() 提供更简洁的替代方案。
示例
考虑以下函数:
function greet(name, occupation) { console.log(`Hello, my name is ${name} and I'm a ${occupation}.`); }
使用 apply() 调用该函数并call():
greet.apply(undefined, ["John", "engineer"]); greet.call(undefined, "Mary", "doctor");
这将输出:
Hello, my name is John and I'm a engineer. Hello, my name is Mary and I'm a doctor.
以上是`call()` 与 `apply()`:何时使用哪种函数调用方法?的详细内容。更多信息请关注PHP中文网其他相关文章!