假設我們有兩個功能,如以下內容:函數(構造函數)返回類型的Javascript奇怪的行爲
function a(){ this.x = 5; return {z:20};}
function b(){ this.x = 5; return 30;}
現在
如果您運行這些行一切似乎是合理的:
a(); //output : {z:20}
b(); //output : 30;
但如果你運行它們作爲對象構造函數:
new a() //output : Object {z:20}
new b() //output : b {x:5}
我不明白如果new
構造函數應該總是返回一個對象,爲什麼行爲不同? JavaScript觀看返回類型嗎?如果返回類型是一個對象,則直接返回,如果不是,則返回啓動的實例?
我想,如果它是一個構造函數,所以要經常忽略的返回類型和returs發起對象。我認爲這種行爲使得JavaScript太複雜。在這裏還有別的東西,我不明白嗎?
謝謝您澄清,但我認爲這使得JS更復雜的理解和調試和IntelliSense支持和...。我不知道這種靈活性可以帶來多大的好處 –