但是前兩天突然想到這樣的代碼時,我就懵了。
function Person(name){
this.name = name;
}
var p1 = new Person("mike");
var p2 = Person("jack"); /*這個不會報錯,這裏Person作爲函數被調用,該函數沒有返回任何值,所以p2是undefined,作爲一個java程序員,我當時在這裏確實懵了*/
console.log(p1);
console.log(p2);
之所以有疑惑,還是因爲對javascript的函數理解不夠。
經過查閱資料,就是作爲參考書的《JavaScript權威指南(第五版)》,大概弄清楚了,但是還不夠清楚。
1、 new是一個運算符,它首先創建一個對象,該對象的屬性都未定義,接下來,它將調用特定的構造函數,傳遞指定的參數,此外還要把新創建的對象傳遞給關鍵字this。這樣構造函數就可以使用關鍵字this來初始化新對象。
2、沒有參數時,可以省去括號。