回答

收藏

call 和 apply 和有什么不一样?

技术问答 技术问答 302 人阅读 | 0 人回复 | 2023-09-11

Function.prototype.apply()使用和Function.prototype.call()调用函数有什么区别?* {2 A* b' m8 @6 ?. O& p
    var func = function() {  alert('hello!');};func.apply();` 对比 `func.call();9 n! S0 M  ?' e
上述两种方法之间是否存在性能差异?什么时候最好使用?callover apply,反之亦然?; Y5 a5 @. K' t  d% f; r) f
                                                                $ Z6 M" U! y. y  b
    解决方案:                                                               
! d, o: i1 Q  {( J9 K& u6 o2 Z                                                                区别在于apply,函数你可以arguments作为数组调用;call要求列出参数。有用的助记符是    A代表数组,C代表逗号”。( A; ~$ e/ [. I) Q
请参阅 MDN 关于apply和call的文档。
0 j, l$ j) H3 K, a- V伪语法:
: c$ n$ b2 `/ W' E0 I% {9 CtheFunction.apply(valueForThis,arrayOfArgs)theFunction.call(valueForThis,arg1,arg2,...)从 ES6 开始,还可以spread您可以在这里使用数组和函数call检查兼容性。3 i" x- f0 x- q, X! ?2 F% r
示例代码:8 d) n% q: _0 f4 k
    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  U  \8 w: T7 _2 w+ H
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则