之前在看那个判断数据类型的时候,用到了call然后我就了解了一下,call和apply的区别。so 我就深入的了解了一下。
定义
apply:应用某一对象的方法,用另一个对象去替代当前对象
B.apply(A,array) 用A对象去调用B对象的方法。
call:调用一个对象的一个方法,用另一个对象替换当前对象
B.call(A,arg),用A对象调用B对象的方法。
区别:call和apply的区别就是他俩传入的参数不一样。
光说不练没啥用,来个栗子说明下
function add(a,b){
return a+b;
}
function sub(a,b){
return a_b;
}
var r = sub.apply(add,[1,2])//用add去调用sub的方法
var r1= add.apply(sub,[1,2])//同上
console.log(r+"------"+r1)//结果是-1-----3
上面这个是基本用法,下面来一个继承的玩
function Person(name){
this.name = name;
this.showName= function(){
console.log(name);
}
}
function Programe(){
Person.apply(this,[name]);
}
var programe = new Programe("java");
programe.showName();//java
//Person.call(this,name);
call和apply的区别也差不多了,该注意地方就是用apply的时候,不管是一个还是多个都要写在数组里面,不然就是typeerror错误。
鄙人拙见,如有出入,还请指正,谢谢!!!