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>