js中的call函数和apply函数
a.call(b)
a.call(b,a1,a2)
把a对象的方法应用到b对象上。b对象也就拥有了a对象所有的内容。b继承a对象。一般用于对象的继承。
例:function class1()
{
this.name = function(){
alert("class1的方法name()");
}
}
function class2()
{
class1.call(this);//要想实现class2继承class1 this就是当前对象class2。
}
a.apply(b)
a.apply(obj,args)
obj:这个对象代替a对象
args:这个是数组,它将作为参数传给a
call()和apply()的区别
注意到,call()与apply()的区别:功能一样。第二个参数形式不一样。call传递多个参数,是任意形式。apply第二个参数必须是数组形式。
用代码来理解它们区别最好:
a.call(b,2,3); ==> a.apply(b,[2,3]);//数组形式传入