2013-01-21 75 views
0

'Javascript: The Good Parts'提供了關於「構造函數調用模式」(第29-30頁)的示例。Javascript'new'關鍵字

var Quo = function (string) { 
    this.status = string; 
}; 

Quo.prototype.get_status = function() { 
    return this.status; 
}; 

var myQuo = new Quo("confused"); 

document.writeln(myQuo.get_status()); // returns confused 

本節結尾,"Use of this style of constructor functions is not recommended. We will see better alternatives in the next chapter."

有什麼例子的點和強力推薦反對使用這種模式?

謝謝。

+0

'get_status'沒有什麼意義,因爲'status'是公開的。但是針對「新ConstructorFunc」的建議是Crockford的個人觀點。 – bfavaretto

+5

這個例子的意義在於......這是一個例子。下一章沒有解釋爲什麼其他模式更好?它在我的副本中。 –

+0

我們應該怎麼知道重點?你讀過下一章嗎?另外,如果你有興趣學習一個很好的面向對象的JavaScript方法,你應該看看[這個答案](http://stackoverflow.com/questions/1595611/how-to-properly-create-a -custom-object-in-javascript) –

回答

3

本節結束與:不建議

這種風格的構造函數的使用。 下一章我們會看到更好的選擇。

加粗的文字意味着你應該閱讀下一章找到更好的替代品。

所以,只要繼續並做到這一點。

1

不要拿克羅福德認真。他習慣於把自己的風格理解爲客觀事實。

事實是,有很多方法可以創建類似Javascript中傳統類的結構。你引用的模式是,廣泛使用,效果很好。

我的建議是學習所有的方法來做到這一點,並使用最好的工作結構。不要太過迷上了克羅克福建議的東西,除非你也知道爲什麼

+0

呃。 'new'會產生一些怪異的行爲。 IMO JS最好被視爲JS,而不是試圖使它看起來像一個經典的OOP語言。對於簡單的用例,我同意,這不是一個問題,只要你知道如何查找錯誤'new'就可以創建沒有任何警告/控制檯錯誤。 –

+0

與任何語言的任何構造一樣,您必須知道如何正確使用它。麻煩JS是一些陷阱並不明顯,因爲他們應該是:) –