this究竟指向誰-執行上下文
阿新 • • 發佈:2018-12-11
首先必須要說的是,this的指向在函式定義的時候是確定不了的,只有函式執行的時候才能確定this到底指向誰,實際上this的最終指向的是那個呼叫它的物件(直接呼叫它的函式)
1)按照我們上面說的this最終指向的是最後呼叫它的物件,在沒有被它的上一級物件呼叫時,這裡的函式a實際是被Window物件所點出來的,下面的程式碼就可以證明。
function a(){
var user = "素凡";
console.log(this.user); //undefined
console.log(this); //Window
}
a();//相當於window.a();
2)return
//例子2:
function fn()
{
this.user = '素凡';
return {};
}
var a = new fn;
console.log(a.user); //undefined
3)特殊情況:this永遠指向的是最後呼叫它的物件,也就是看它執行的時候是誰呼叫的,例子4中雖然函式fn是被物件b所引用,但是在將fn賦值給變數j的時候並沒有執行所以最終指向的是window
var o = { a:10, b:{ a:12, fn:function(){ console.log(this.a); //undefined console.log(this); //window } } } var j = o.b.fn; j();