2014-03-06 75 views
3

有在javascript兩件式的範圍名爲 功能範圍爲什麼「這個」函數的返回對象窗口內

現在我執行此代碼

function abc() 
{ 
alert(this); 
} 
abc(); 

ABC呼叫 全球範圍內返回我[對象窗口] 爲什麼?函數使另一個範圍如此,爲什麼它代表窗口爲什麼它代表窗口

+0

寫你的函數「這」爲什麼我的朋友http://stackoverflow.com/questions/2148451/help-this-is-confusing -ME-中的JavaScript –

回答

7

this,在任何函數內部,將是函數被調用的對象。在你的情況下,你不是在任何對象上調用它。所以,默認this是指global對象,在您的瀏覽器中,它是window對象。

但是在strict模式下,如果你這樣調用它,this將會是undefined

"use strict"; 
function abc() { 
    console.log(this); // undefined 
} 
abc(); 

或者

function abc() { 
    "use strict"; 
    console.log(this); // undefined 
} 
abc(); 
1

您的功能正在全球(窗口)對象。我的意思是,

function abc() 
{ 
    alert(this); 
} 
abc(); 
// or You can either call by 
window.abc() 

您可以在自定義對象

// Function under custom object 
var customObj = { 
    abc : function() { 
     alert(this); 
    } 
}; 
customObj.abc()