JavaScript中的this

2017-08-17  本文已影响0人  yangrenmu

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

 function foo() {
   console.log(this.a); // 2
 }
 var a = 2;
 foo();

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

 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();
  function Foo() {
    this.a = 1;
  }
  var a = 2;
  var bar = new Foo();
  console.log(bar.a); // 1
function foo() {
  console.log(this.a);
}
var obj = {
  a: 2,
  foo: foo
}
var a = 1;  
foo.apply(obj);
foo();
上一篇下一篇

猜你喜欢

热点阅读