介绍 .call 和 .apply 的区别。

20 浏览
0 Comments

介绍 .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");

那么谁能告诉我 callapply 的区别是什么吗?

admin 更改状态以发布 2023年5月24日
0
0 Comments

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])

0
0 Comments

我认为你刚刚自己发现了它们的区别。

call几乎与通常调用函数的方式完全相同,只不过在参数列表的开头有一个额外的参数,你可以在这里放置this对象的引用。

apply也有第一个参数作为this对象,但第二个参数应该是一个数组。该数组用于提供调用函数所期望的所有参数。元素0映射到函数参数列表中的第一个参数,元素1映射到第二个参数,以此类推。

0