JS中this的指向问题。

197 阅读1分钟

1、在全局中this指向。

全局的this指向它指向的的是window this=>window

<script>
// 直接输出this它指向的是window
    console.log(this)
// 在这直接调用函数方法的时候他指像的也是window,也就是说他也是一个全局的对象
    function arr() {
          console.log(11)
      }
      arr()
</script>

2、在局部的this指向。

在局部的时候,谁调用它,它指向的就是谁。 this=>obj

<script>
        let obj = {
            name:'kele',
            fn:function a(){
                console.log('11')
            },
            fn2:function a(){
                console.log('11')
            },
        }
        //在这调用函数的方法
        console.log(obj.fn)
        console.log(obj.fn2)
    </script>

3、箭头函数的this指向。

箭头函数没有this指向,因为定义的this就是作为上下文的this,因为箭头函数没有this,所有不能用作构造函数。

 let obj1 = {
        name: "kele",
        fn: () => {
          console.log(this);
        },
        fn2: () => {
          console.log(this);
        },
      };
      console.log(obj1.fn)
      console.log(obj1.f2)

      let arr = () => {
        console.log(this);
      };
      console.log(arr)

小结。

  1. this总是指向的是直接调用的,而不是间接调用的。
  2. 如果有new关键词的话,那么this指向的就是new出的对象
  3. 如果在事件里的话,this指向的就是当前的事件,有特殊的在IE里面的accthEvent中的this指向的全局对象window

this指向我就先总结真么多,如果此文章对你有帮助那就那就是对我的鼓励。