js中this的指向

哪个对象调用函数,函数中的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的指向
两者区别:传入的参数不同

  1. 函数名. call(对象,实参1,实参2);
    第一个参数: 要让函数中this指向谁,就写谁
    后面的参数: 被调用函数要传入的实参,以逗号分隔

2.函数名. apply(对象,数组);
第一个参数: 要让函数中this指向谁,就写谁
第二个参数: 要去传入一个数组,里面存放被调用函数需要的实参

3.bind 不调用函数,克隆一个新的函数,并修改新函数中this的指向,将新的函数返回
函数名. bind(对象[,实参]);
第一个参数: 要让函数中this指向谁,就写谁

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。