JavaScript之call()&apply()

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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"

 

以上是关于JavaScript之call()&apply()的主要内容,如果未能解决你的问题,请参考以下文章

JavaScirpt之apply&call和bind

学习Javascript之模拟实现bind

JavaScript--call()函数 & apply()函数 & bind()函数

学习JavaScript之this,call,apply

JavaScript 之 call apply bind

JavaScript之bind,call,apply