window.color = "red;
var o = {
color:"blue"
};
function sayColor(){
alert(this.color);
}
sayColor(); //red
sayColor.call(this); //red
sayColor.call(window); //red
sayColor.call(o); //blue
理解:sayColor()本身在全局作用域中,当参数是this和window时,sayColor()就是全局函数;
当参数是 o 的时候,sayColor()就变成了对象 o 的函数了。
一句话改变函数作用域,并且传递参数。
即call和apply是为了动态改变this而出现的,当一个object没有某个方法,但是其他的有,我们可以借助call或apply用其它对象的方法来操作。