在js中,所有的函数被调用的时候都会默认传入两个参数,一个是this,还有一个是arguments。
在默认情况下this都是指当前的调用函数的对象。
但是有时候我们需要改变this的指向,也就是说使函数可以被其他对象来调用,那么我们应该怎样做呢?这时候我们就可以使用call,apply和bind方法了
call和apply可以用来重新定义函数的执行环境,也就是this的指向。
call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的。
换句话说,就是为了改变函数体内部 this 的指向。
因为 JavaScript 的函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改变的」这样的概念。
用例:
function changeStyle(attr, value) { this.style[attr] = value; } var box = document.getElementById('box'); window.changeStyle.call(box, "height", "200px");
备注:changeStyle函数将被box对象调用,this指向了box对象,如果不用call的话,程序报错,因为window对象中没有style属性。