介绍 .call 和 .apply 的区别。
介绍 .call 和 .apply 的区别。
这个问题已经有了答案:
有没有一种简单的方法将一个函数的所有参数传递给另一个函数,并发送 this
。
我尝试了这个:http://jsfiddle.net/v92Xr/
var f1 = function() { f2.call(this, arguments); }; var f2 = function() { console.log(arguments); }; f1("abc", "def", "hij");
但是它让f2的参数0中堆叠了f1的所有参数:
f2->arguments[0] == f1->arguments
好的,当我运行apply
方法时,它就起作用了:http://jsfiddle.net/v92Xr/1/
var f1 = function() { f2.apply(this, arguments); }; var f2 = function() { console.log(arguments); }; f1("abc", "def", "hij");
那么谁能告诉我 call
和 apply
的区别是什么吗?
admin 更改状态以发布 2023年5月24日
call MDN: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/call
使用给定的 this 值调用函数,并单独提供参数。
fun.call(thisArg[, arg1[, arg2[, ...]]])
apply MDN: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/apply
使用给定的 this 值调用函数,并以数组形式提供参数。
fun.apply(thisArg[, argsArray])