问题

使用callapply调用函数有什么区别?

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

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

上述两种方法之间是否存在性能差异?何时最好使用call超过apply,反之亦然?

  最佳答案

不同的是,apply允许您以arguments作为数组调用函数;call需要明确列出参数.有用的mnemonic是“用于数组的A和用于逗号的C”.

请参阅 MDN 在 上的文档应用 调用

伪语法:

theFunction.apply(valueForThis, arrayOfArgs)

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

另外,在 ES6 中,可以使用 spread 数组与 call 函数一起使用,您可以看到 here 这里的兼容性。

示例代码:

 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 

  相同标签的其他问题

javascriptperformancefunctiondynamic