电话和申请有什么区别?
2022-08-29 21:47:41
使用函数 和 调用函数有什么区别?Function.prototype.apply()
Function.prototype.call()
var func = function() {
alert('hello!');
};
func.apply();
与func.call();
上述两种方法之间是否存在性能差异?什么时候最好使用over,反之亦然?call
apply
使用函数 和 调用函数有什么区别?Function.prototype.apply()
Function.prototype.call()
var func = function() {
alert('hello!');
};
func.apply();
与func.call();
上述两种方法之间是否存在性能差异?什么时候最好使用over,反之亦然?call
apply
不同之处在于,允许您以数组的形式调用函数; 要求显式列出参数。一个有用的助记词是“A代表rray,C代表comma”。apply
arguments
call
伪语法:
theFunction.apply(valueForThis, arrayOfArgs)
theFunction.call(valueForThis, arg1, arg2, ...)
从ES6开始,还有可能扩展
数组以与函数一起使用,您可以在此处看到兼容性。call
示例代码:
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
K. Scott Allen对此事有很好的描述。
基本上,它们在处理函数参数的方式上有所不同。
apply() 方法与 call() 相同,只是 apply() 需要一个数组作为第二个参数。数组表示目标方法的参数。
所以:
// assuming you have f
function f(message) { ... }
f.call(receiver, "test");
f.apply(receiver, ["test"]);