美文网首页
JavaScript中的this

JavaScript中的this

作者: yangrenmu | 来源:发表于2017-08-17 10:52 被阅读0次

    JavaScript中this有多种含义,完全取决于this的调用方式。

    • 1、默认绑定
     function foo() {
       console.log(this.a); // 2
     }
     var a = 2;
     foo();
    

    函数foo() 在调用时,this被默认绑定到了全局对象。

    • 2、作为对象方法调用
     function foo() {
       console.log(this.a);
     }
     var obj = {
       a: 2,
       foo: foo,
       bar: function() {
         console.log(this.a);
       }
     };
     var a = 1;
     foo(); // 1
     obj.foo(); // 2
     obj.bar(); // 2
    

    函数作为对象的方法调用时,this被绑定到该对象。但是当该函数内部又定义了一个函数时,内部函数的this指向window。

    var obj = {
      a: 2,
      bar: function() {
        console.log(this.a); // 2
        function daz() {
          console.log(this.a); // 1
        }
        daz();
      }
    };
    var a = 1;
    obj.bar();
    
    /************************************************/
    
    var obj = {
      a: 2,
      bar: function() {
        console.log(this.a); // 2
        a = 3;
        console.log(this.a); // 2
        function daz() {
          console.log(this.a); // 3
        }
        daz();
      }
    };
    var a = 1;
    obj.bar();
    
    • 3、使用new绑定
      this指向new创建的对象。
      function Foo() {
        this.a = 1;
      }
      var a = 2;
      var bar = new Foo();
      console.log(bar.a); // 1
    
    • 4、使用apply或call绑定
      apply和call 可以改变函数执行的作用域,函数使用apply或call进行绑定时,this指向apply传入的对象;
    function foo() {
      console.log(this.a);
    }
    var obj = {
      a: 2,
      foo: foo
    }
    var a = 1;  
    foo.apply(obj);
    foo();
    

    相关文章

      网友评论

          本文标题:JavaScript中的this

          本文链接:https://www.haomeiwen.com/subject/yfrgrxtx.html