2014-02-28 152 views
1

這裏是一個函數:JavaScript代碼的解釋需要

function ShowHelloWorld(){ 
this.x=4; 
var y=5; 
return 6; 
} 

聲明1. var res1 = ShowHelloWorld;

1.1於是,res1是ShowHelloWorld功能的副本。

1.2 res1()得到6.

1.3沒有辦法從res1達到值4和5。

聲明2. var res2 = ShowHelloWorld();

2.1 res2得到6作爲函數的結果。

2.2從res2無法達到值4和5。

聲明3. var res3 = new ShowHelloWorld();

3.1這裏res3是函數ShowHelloWorld的一個實例()。

3.2 res3.x可以到達。 //res3.x==4

3.3無法達到res3的值5和6。

聲明4. var res4 = new ShowHelloWorld; //無()

4.1好像RES4是相同的res3。爲什麼? (當我在瀏覽器控制檯中測試它時,我發現它是一樣的)。

4.2什麼是此行的意義(這是有道理的,如果沒有錯誤,對吧?)

請回答我的問題或糾正我的聲明的情況下,如果它們不正確或可能會更好。

謝謝。

+1

1.1和3.1是錯誤的別名。 3.2是錯誤的,因爲一個錯字。 4.2不返回布爾值。 –

回答

2

1)res1不是副本ShowHelloWorld。這只是一個參考,一個別名。

2)res2是致電ShowHelloWorld的結果。其餘是真的。

3)有點真實。但是,如果返回對象6是原始對象,而不是對象),則new將返回該對象。看看這個片斷:

function ShowHelloWorld(){ 
    this.x=4; 
    var y=5; 
    return {}; 
} 

現在沒有什麼是除了最終目標{}訪問。所以如果你想把一個函數當作一個類來處理(即你想使用new),那麼最好省略return聲明。

4)new ShowHelloWorld;只供new ShowHelloWorld();

1

由於JavaScript語法,語句4與語句3相同。 'new'關鍵字之後應該是將用作構造函數的函數的名稱。參數可以跳過。