fn.call(n,x)call里面传递的第一个参数是将fn这个函数里面的this换成n,换言之如果,fn这个函数里面没有this,那么这句话就相当于fn执行。
举个例子
function fn1() {
alert(1);
}
function fn2() {
alert(2);
}
fn1.call(fn2);
弹出的结果为1,因为这只是改变了fn1里面的this,但是fn里面没有this,所以弹出的还是1 ;
再来看个例子,还是上述的函数
fn1.call.call(fn2);
这下弹出的就是2
上述代码的意思就是,将fn1.call里面的this换成fn2,而这里面的this是fn1整个函数体的字符串,将其换成fn2之后 就相当于fn2执行了
apply 跟call 的区别
在执行函数传递传递参数的时候,call是一个个的传递参数,apply是把需要传递的参数放到一个数组中,一起传进去