複製程式碼
程式碼如下:
function Test() {
this 㟎>
. ;
return function() { return true; }
}
複製代碼
程式碼如下:
function Test() {
this.name = 'Test';
return 'Test';
}
return 'Test';
} var fnT = Test(); var newT = new Test(); 顯然,fnT 是字串Test,那newT 呢?呵呵,是不是被第一個範例迷惑了?其實,此時 newT 就是一個 Test 物件——有一個名為 name 的屬性,其值為字串 Test。 透過上面兩段程式碼,我們可以得到一個猜測,如果函數傳回值為常規意義上的值類型(Number、String、Boolean)時,new 函數將會傳回一個該函數的實例對象,而如果函數傳回一個參考類型(Object、Array、Function),則new 函數與直接呼叫函數產生的結果等同。透過在 Test 函數中傳回不同類型的值進行測試,可以證實這一點。 分清這一點,其實還蠻重要的,至少在看一些物件導向的框架類別函式庫程式碼時,會少一點疑惑。