在js中我们调用一个自己定义的函数一般都是 函数名() 调用一个函数。
然而在javascript中还有两种调用方式 函数名.call() ,函数名.apply()
其实如我们调用一个普通的函数用什么方式调用都是一样的效果,只是调用一些特殊的函数时用到call和apply是比较有用的。
call函数:call([thisobj,[arg1,[arg2]]])
apply函数:apply([thisobj,[arg1,arg2]])
这两个函数主要是用到this对象
var v='window对象';
var obj={v:'obj中的对象'};
function show(){
alert(this.v);
}
show();//window对象
show.call(this);//window对象
show.call(obj);//obj中的对象
call和apply函数功能上都是一样的,主要的不同就是传参的方式不同。
call的第一个参数函数中this的对象指向,调用函数要传的参数依次在后边传入即可。
apply只有两个参数可以传递。第一个参数函数中this的对象指向,第二参数是一个数组,调用函数要传递的参数,把要传递的参数放在一个数组传入。
var a={name:'张三'};
var b={name:'李四'};
function show(sex,age){
alert(this.name+':'+sex+':'+age);
}
show.call(a,'男',12);//张三:男:12
show.call(b,'女',23);//李四:男:23
show.apply(a,['女',23]);//张三:女:23
show.apply(b,['男',12]);//李四:男:12
个人理解不足之处多多指教