函數this指向哪一個對象?

函數的this指向是根據函數調用時所處的執行環境來肯定的。javascript

this指向對象的狀況有四種:java

1.使用new關鍵字時:this會綁定構造函數所建立的對象。app

function Foo(){
    this.a = 1;  
}

var bar = new Foo();  //此時this綁定爲Foo構造函數所建立的對象。

  

2.使用 call, apply, bind方法調用:this 會綁定 call, apply 的第一個參數的引用對象。函數

function foo(){
  console.log(this.name);  
}

var a = {name : "i'm apply!"};
var b = {name : "i'm bind!"};
var c = {name : "i'm call!"};

foo.apply(a);   //此時this 綁定在a對象;
foo.bind(b);    //此時this 綁定在b對象;
foo.call(c);    //此時this 綁定在c對象;

  

3.在某個上下文的對象中被調用:this綁定所處上下文對象。this

4.默認綁定:this 在 「嚴格模式下爲」:undefined, 「非嚴格模式下」綁定全局對象。spa

function foo(){ console.log(this.name); } var f = { name: "i'm foo!", foo: foo } f.foo() // 此時this綁定在foo對象;

var name = "window"; foo() //此時this默認綁定全局對象;
相關文章
相關標籤/搜索