通过function的call方法来调用方法,可以改变方法的this的对象,并且还可以传入方法参数,call对于面向对象编程还是很有用的。

Function.call(obj[,param1,param2,...])

obj:这个对象将代替Function类里this对象

param1:Function的第一个参数。param2: Function的第二个参数。

call和apply区别主要是参数不同 ,apply方法的第二个参数是一个数组。

示例代码如下:

function man()
{
  this.Name="man";
  this.SayName=function(){
     alert(this.Name);
   }
}
function woman()
{
  this.Name="woman";
  this.SayName=function(){
     alert(this.Name);
   }
}
function say(word,age)
{
 //只有say方法的this是man,或是woman对象才可以调用,say方法本身是没有SayName方法的。
  if(this.SayName)
    this.SayName();
  alert(word+age);
}
var m=new man();
var w=new woman();
//通过call方法调用say
say.call(m,"abc",20);
//用apply调用
say.apply(m,["abc",20]);
//用bind调用
say.bind(m,"abc",20)();//返回的是方法,还要在执行一下。