首先我们先看一段代码
function a (){
console.log("i am a");
}
function b(){
conssole,log("i am b");
a.call(this);
}
b(); // 运行b,首选打印出 i am b,然后打印i am a
由此我们可以看出,b函数继承了a函数的console.log(“i am a”)方法,并且在执行完自己方法后执行了继承的方法
由此看出,a.call(b)的意思就是将a函数this指向了b函数,使之b函数继承了a函数
上面代码中的a.call(this)就是,a将自己函数中的方法或者元素继承给了当前的函数也就是this,所以b函数才能调用打印出i am b
再写一个例子体会一下
function c(){
var arr=[].slice.call(arguments); // 这里的[].slice实际就是一个函数
console.log(arguments);
console.log(arr);
};
c(1,2,333);
结果打印
因为[].slice实际就是一个函数,所以[].slice.call(arguments)这句话,意思就是arguments.slice,可以体会一下,所以最后打印出来的arr就是arguments.slice后的结果