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环境中执行,Person的this指向o对象;
最后,欢迎各位大神指点!!!