call和apply

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title></title>
 6     </head>
 7     <body>
 8     </body>
 9     <script type="text/javascript">
10 //        javaScript中的每一个Function对象都有一个apply()方法和一个call()方法
11         
12 //        call apply  注意如果call和apply的第一个参数写的是null,那么this指向的是window对象
13         var a = {
14             user:"追梦子",
15             fn:function(){
16                 console.log(this.user); //追梦子
17             }
18         }
19         
20         var b = a.fn;
21         b.call(a);        // b函数 this指向 a
22         
23 //        通过在call方法,给第一个参数添加(a)要把b添加到哪个环境中,简单来说,this就会指向那个对象。
24 //        call方法除了第一个参数以外还可以添加多个参数
25 
26 
27 //        apply方法
28 
29         var a = {
30             user:"追梦子",
31             fn:function(){
32                 console.log(this.user); //追梦子
33             }
34         }
35         var b = a.fn;
36         b.apply(a);
37         
38 //        同样apply也可以有多个参数,但是不同的是,第二个参数必须是一个数组
39             
40         var arr = [1,2,3,4,5];
41         
42         console.log( Math.max.apply(null,arr) );    // 通过 apply 求最大数
43         
44         Array.prototype.push.apply(arr1,arr2);        // 通过 apply合并两个数组
45         
46     </script>
47 </html>

 

posted @ 2019-08-26 11:18  jeff_zhu  阅读(148)  评论(0编辑  收藏  举报