Call与apply的用法与区别

Call方法:

语法:call(thisObj,agr1,agr2,agr3..........)

定义:调用一个对象的方法,以另一个对象替换当前对象。

例子:

1、add.call(sub,3,1);add方法来替换sub

Apply方法:

语法:apply(thisObj,agrArray)

定义:应用某一对象的一个方法,用另一个对象替换当前对象。

联系:这两个方法都能劫持另一个对象的的方法,继承另一个对象的属性。

不同:参数列表不一样。

解释:function.apply(obj,args)

Obj:这个对象代替xxxfunction类里的this对象,即function类(函数)里的this不是指向function本身,而是指向obj

args:这个数组类型参数,它将作为参数传递给function,结果还是执行function类方法的功能,只不过该function函数以另一个目标对象和一个数组作为参数传递进function函数,function里面的this是传进的目标对象,而不是function本身。

 

实例:

function Person(name,age,job){

     this.name=name;

 this.age=age;

 this.job=job;

     this.sayName=function(){

    alert(this.name);

 }

 }

Var o=new Object();

Person.call(0,”zhangsan”,20,”IT”);

o.sayName();//”zhangsan”

其实说白就是把Person放到o环境中执行,Personthis指向o对象;

最后,欢迎各位大神指点!!!

原文地址:https://www.cnblogs.com/hcw136156133/p/4112939.html