1 /*
2 在js中 call和apply常用于绑定作用域
3 */
4 //1 简单的绑定
5 function sum(a,b){
6 return a+b;
7 }
8 //将sum的功能绑定给test2来执行
9 function test2(a,b){
10 return sum.call(this,a,b);
11 }
12 // call 和apply的区别是 apply接收数组作为参数
13 function test3(a,b){
14 return sum.apply(this,[a,b]);
15 }
16
17
18
19 //2 临时绑定调用者 解耦
20 var obj = {
21 color:"red",
22 name:"z3"
23 };
24
25 function showInfo(){
26 alert(this.color);
27 alert(this.name);
28 }
29 //在js中 this指定是调用者。哪个对象调用函数this就是哪个对象
30 //如果我们想用showInfo去操作obj,那就要用obj去调用这个对象
31 //用call绑定obj给函数 就可以实现,可以减少函数和对象的耦合
32 showInfo.call(obj); //好像是用obj去调用这个方法,提高了showInfo函数的重用性
33
34 /*
35 内部实际上是:
36 1 将obj绑定一个函数method = shouwInfo
37 2 用obj去执行method()
38 3 删除method
39 这样一个过程
40 */