2012-03-20 37 views
0

假設我有一個函數面向對象:我如何可以定義一個全局變量javascript函數更好

function test(){ 

//should I define global variable here 
//like window.arr=new Array()? 

} 

//can I define here 
//window.arr=new Array()? 

test.prototype.method01=function(){ 
//or here:window.arr=new Array()? 
} 

上述三種方式中,哪一個更好?

+0

就宣佈它的任何功能範圍之外,你將所有設置。你甚至不必訪問'window'對象。 – 2012-03-20 01:42:55

+0

不用var來定義它,它會全局化,無論你在 – thescientist 2012-03-20 01:49:24

+0

@thescientist中創建它的範圍如何,它也不清楚它在哪裏定義,所以這是一個壞主意,除非你想要混淆代碼。 – vol7ron 2012-03-20 01:53:00

回答

1

如果它是一個全球性的,你很可能想要在一個函數之外定義它。這是因爲如果它是全球性的,你希望它可以被任何/所有功能訪問。

當JavaScript被解釋爲它將被解釋時。如果在函數之外定義它,它將在解釋時被聲明,如果它在函數內被調用,它將被聲明爲函數被調用。

0

您可以定義全局變量與上述情況都很好。

但最大的區別是,你必須調用函數有陣

除了第二種情況。

0

如果你打算定義一個全局變量(開頭有點可疑,甚至全局變量都應該是命名空間),不要在難以追蹤的地方執行 - 保持在頂層,不要縮進,所以它是容易發現。

1

全局變量通常是個壞主意。你可以做的最好的事情就是儘量減少它的影響。創建一個全局變量,這個變量將成爲侑應用容器,例如:


var APP = {}; 

APP.my_array = []; 

我建議你檢查JavaScript: The Good Parts

+1

好的部分是一個很好的資源。以及Crockford的所有事情。 – thescientist 2012-03-20 15:44:03

相關問題