javascript疑难问题---10、call和apply

javascript疑难问题---10、call和apply

一、总结

一句话总结:

call和apply方法 不仅可以执行函数(方法),更重要的是他们在执行函数(方法)的时候可以改变函数(方法)里面this的指向

1、函数(方法)中this的指向?

就是谁调用函数(方法),函数(方法)里面的this就指向谁

2、函数名() 执行函数 和 call和apply 方法 执行函数的区别是什么?

相比于函数名() 执行函数的方式,call和apply 方法 执行函数 的时候,可以改变this的指向

3、call方法和apply方法的区别?

call方法是指定this的指向之后参数是依次传递,apply方法是指定this的指向之后,参数放到一个数组里面统一传递

二、call和apply

博客对应课程的视频位置:10、call和apply
https://www.fanrenyi.com/video/4/175

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>call和apply</title>
 6 </head>
 7 <body>
 8 <!--
 9 1、
10 this的指向问题:
11 就是谁调用函数(方法),函数(方法)里面的this就指向谁
12 
13 执行函数:函数名()
14 call和apply 也可以执行函数
15 
16 
17 
18 2、
19 call和apply方法 不仅可以执行函数(方法),更重要的是他们在执行函数的时候可以改变函数(方法)里面this的指向
20 
21 3、
22 函数名() 执行函数 和 call和apply 方法 执行函数的区别是什么
23 call和apply 方法 执行函数 的时候,可以改变this的指向
24 
25 4、
26 call方法和apply方法的区别
27 call方法和apply方法一样都可以执行函数和改变函数的this的指向,唯一区别在于:
28 传递参数的时候,如果使用的是call方法,那么参数在改变的this的指向的对象后面是依次传递
29 如果使用的是apply方法,那么参数在改变的this的指向的对象后面是要放到一个数组里面统一传递的
30 
31 -->
32 <script>
33     function readThis(a,b,c) {
34         console.log(a);
35         console.log(b);
36         console.log(c);
37         console.log(this);
38     }
39     //readThis();
40     //readThis(1,2,3);
41     //readThis.call();
42     //readThis.apply();
43 
44     var zhuBaJie={
45         name:'猪八戒',
46         fun1:readThis
47     };
48     //zhuBaJie.fun1();
49     //zhuBaJie.fun1(4,5,6);
50     //readThis.call(zhuBaJie);
51     //readThis.apply(zhuBaJie);
52     //readThis.call(zhuBaJie,7,8,9);
53     readThis.apply(zhuBaJie,[10,11,12]);
54 
55 </script>
56 </body>
57 </html>
原文地址:https://www.cnblogs.com/Renyi-Fan/p/12503008.html