JavaScript之call()&apply()

场景一:定义了一个类A,给它一个getName的方法;定义了一个类B,给它一个setName的方法;之前A只需要获取它的Name,B也只需要设置它的Name,但现在有新的需求,A和B都需要设置和获取他们各自的Name,肿么办,来吧,让call()和apply()带你飞~~~

 1 //定义一个类A
 2 function A(name){
 3     this.Name=name;
 4 }
 5 //类A一个获取name的方法
 6 A.prototype.GetName=function(){
 7     return this.Name;
 8 }
 9 //定义一个类B
10 function B(name){
11     this.Name=name;
12 }
13 //类B一个设置name的方法
14 B.prototype.SetName=function(rename){
15     this.Name=rename;
16 }
17 //创建对象a,b
18 var a=new A("我是a"),b=new B("我是b");
19 //b想知道它的名字
20 a.GetName.call(b);  //结果: "我是b"  ps:将this指向b
21 a.GetName.apply(b);  //结果: "我是b"  ps:将this指向b
22 //a想修改它的名字
23 b.SetName.call(a,"我是AA");     //ps:将this指向a
24 b.SetName.apply(a,["我是AA"]);     //ps:将this指向a
25 a.GetName()  //结果:"我是AA"

 

posted on 2016-06-21 18:28  Yancy19  阅读(134)  评论(0)    收藏  举报

导航