函数方法call()和apply()

 1 <!DOCTYPE html>
 2 <html>
 3 
 4     <head>
 5         <meta charset="UTF-8">
 6         <title></title>
 7         <script type="text/javascript">
 8             function fun(a,b) {
 9                 console.log("a = "+a);
10                 console.log("b = "+b);
11                 //alert(this);
12                 alert(this.name);
13                 
14             }
15             
16             var obj = {
17                 name: "obj",
18                 sayName:function(){
19                     alert(this.name);
20                 }
21             };
22 
23             /*
24              * call()和apply()
25              *     - 这两个方法都是函数对象的方法,需要通过函数对象来调用
26              *     - 当对函数调用call()和apply()都会调用函数执行
27              *     - 在调用call()和apply()可以将一个对象指定为第一个参数
28              *         此时这个对象将会成为函数执行时的this
29              *     - call()方法可以将实参在对象之后依次传递
30              *     - apply()方法需要将实参封装到一个数组中统一传递
31              * 
32              *     - this的情况:
33              *         1.以函数形式调用时,this永远都是window
34              *         2.以方法的形式调用时,this是调用方法的对象
35              *         3.以构造函数的形式调用时,this是新创建的那个对象
36              *         4.使用call和apply调用时,this是指定的那个对象
37              */
38             
39             //fun.call(obj,2,3);
40             fun.apply(obj,[2,3]);
41 
42             
43 
44             var obj2 = {
45                 name: "obj2"
46             };
47 
48             /*fun.apply();
49             fun.call();
50             fun();*/  //this 就是window
51 
52             //fun.call(obj); //this 就是obj
53             //fun.apply(obj); //this 就是obj
54 
55             //fun();
56             
57             //obj.sayName.apply(obj2);
58         </script>
59     </head>
60 
61     <body>
62     </body>
63 
64 </html>

1.

  - this的情况:
             *      1.以函数形式调用时,this永远都是window
             *      2.以方法的形式调用时,this是调用方法的对象
             *      3.以构造函数的形式调用时,this是新创建的那个对象
             *      4.使用call和apply调用时,this是指定的那个对象

猜你喜欢

转载自www.cnblogs.com/fsg6/p/12769165.html
今日推荐