14
2020
04

如何判断this的指向

  1. 默认情况(谁的方法就指向谁)

  2. 显示绑定

  3. 箭头函数

  4. 严格模式

第一种情况(谁的方法就指向谁)


1、


    var a = 2;

    var obj = {

      a:1,

      getVal(){

          console.log(this.a); 

      }

    }

    obj.getVal(); //1


2、


   class A {

       a(){

        console.log(this);

       }

   };

   const f = new A();

   f.a(); // A {}


3、


  function fun() {

      console.log(this)

  };

  fun(); //window,这里相当于window.fun()。


第二种情况(显示绑定)


call、apply、bind方法都能显示改变this的指向。


 var value = 3;

    var obj = {

        value: 1

    }

    function get() {

        console.log(this.value); 

    }

    get(); // 3

    get.call(obj); // 1

    get.apply(obj); // 1

    get.bind(obj)(); // 1


第三种情况(箭头函数)


箭头函数的this与function中的this指向不同,它指向其外部的上下文。


    var value = 3;

    var obj = {

        value: 1,

        get: ()=> {

            console.log(this.value);

        }

    }

    obj.get(); // 3


第四种情况 (严格模式 )


严格模式下,方法直接被调用的时候,方法内部的this不会指向window。


'use strict'

function fun() {

    console.log(this)

}

fun(); //undefined


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。