众所周知,函数内的this指向调用它的对象,但是如何改变this的指向呢?
bind(),call(),apply()都可以改变函数的执行上下文,也就是this的指向。但用法上有所不同。
call()的用法:
function.call(调用的对象(obj),参数),这个呢是让obj调用这个function方法并执行,参数是以逗号隔开的。
apply()的用法:
与call()相似,不同的地方是参数,参数必须是数组或者类数组。也是会直接执行的。
bind()的用法:
bind()与上面两种就不一样了,它只是单纯的改变函数的执行上下文,并不会马上执行函数。
btn1.onclick=function(){
console.log(this)
}.bind(btn2); //这个时候this的指向不是btn1而是btn2了