哪个对象调用函数,函数中的this指向那个对象
总结遇到的this指向的情况,直接上结论:
1.定时器,延时器中 :this指向window
2.普通的函数中:this指向window
3.构造函数中:this指向实例化的对象
4.箭头函数中:指向宿主对象
可以这样理解:箭头函数没有自己的this,需要去它的上一层找,它内部的this指向就是外部代码块的this指向
5.DOM0级事件的回调函数中指向window 例如:
<button onclick="fn()">点击</button>
<script>
function fn(){
console.log(this);
}
</script>
结果:this指向window
6.DOM2级事件指向对应的节点对象
修改this指向:call apply bind
call和apply 调用该函数,并修改函数中this的指向
两者区别:传入的参数不同
- 函数名. call(对象,实参1,实参2);
第一个参数: 要让函数中this指向谁,就写谁
后面的参数: 被调用函数要传入的实参,以逗号分隔
2.函数名. apply(对象,数组);
第一个参数: 要让函数中this指向谁,就写谁
第二个参数: 要去传入一个数组,里面存放被调用函数需要的实参
3.bind 不调用函数,克隆一个新的函数,并修改新函数中this的指向,将新的函数返回
函数名. bind(对象[,实参]);
第一个参数: 要让函数中this指向谁,就写谁