讀古今文學網 > 編寫高質量代碼:改善JavaScript程序的188個建議 > 建議20:不要使用new >

建議20:不要使用new

通過new運算符將創建一個繼承於其運算數的原型的新對象,然後調用該運算數,把新創建的對象綁定給this。這給了運算數(它應該是一個構造器函數)一個機會,在返回給請求者前去自定義新創建的對象。

如果忘記使用new運算符,得到的就是一個普通的函數調用,並且this被綁定到全局對象,而不是新創建的對象。這意味著當函數嘗試去初始化新成員時,它將會「污染」全局變量,這是一件非常糟糕的事情,既沒有編譯時警告,也沒有運行時警告。

按照慣例,結合new運算符使用的函數應該被命名為首字母大寫的形式,並且首字母大寫的形式應該只用來命名那些構造器函數。這個約定提供了一個視覺線索,以幫助發現那些JavaScript語言自身經常忽略卻需要付出昂貴代價的錯誤。一個更好的應對策略就是根本不使用new運算符。