一、call和apply

一、call和apply

函数中的this在定义的时候,无法确定,只有当函数执行的瞬间,this才能确定下来。

简单来说,就是:

谁调用,指向谁

举例:

1
2
3
4
5
6
7
8
9
10
11
12
13
<body style="height:500px">

// 定义函数
function fun(a, b, c){
console.log(this, arguments);
}

// 函数单独执行
// fun(1, 2, 3);

// 作为事件函数执行
// document.onclick = fun;
document.body.onclick = fun;

UMEuFA.png

当我们需要改变函数中的this指向固定元素的时候,我们就要用到call或者apply

1.1 call

call方法是每一个函数天生可以调用的。

作用:

执行函数,并改变函数的this指向

使用方式:

  • fun.call()

    • 可以接受多个参数:

      • 第一个参数就是要改变的this指向

      • 从第二个参数开始都是原函数所需要的参数

1
2
// 使用call改变函数的this指向
fun.call(document, 1, 2, 3);

UMElSP.png

如果fun函数中需要传递参数,就可以往call第二个参数开始传递。

1.2 apply

和call方法作用一致,都是执行函数,并改变函数中的this指向

使用方式:

fun.apply()

  • 与call方法不同的是参数:

    • 可以接受2个参数:

      • 第一个参数是改变函数的this指向

      • 第二个参数是一个数组,数组中每一项就是函数所需要的参数

1
2
// 使用apply改变函数中this指向
fun.apply(document.body, [1, 2, 3]);

UMEtoj.png

点击查看

本文标题:一、call和apply

文章作者:Mango

发布时间:2020年07月13日 - 22:17:53

最后更新:2020年07月14日 - 13:27:10

原始链接:https://mango185.github.io/post/e1c9ba31.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------------本文结束 感谢您的阅读-------------------