2013-12-14 67 views
1

當我遇到對象和類增強時,我閱讀了一些在線教程並瞭解了在對象增強中,我們不需要有prototype關鍵字來創建變量和方法對象,而在類增強中,我們需要使用prototype關鍵字來爲函數創建變量和方法。幾乎都是一樣的,但我看到的方法是唯一的區別,創建一個對象的變量和方法。我想了解對象增強和類增強的具體原因。javascript中的對象增強和類增強之間的區別

回答

3

JavaScript中沒有真正的類。它是一種基於OO的語言,但它使用原型繼承來實現這一點。

的一般要點是:

  • 當你增加原型,與原型利益的所有對象,獲得的功能。優點是使用較少的內存,因爲每個人都共享相同的功能對象。使用原型時,模擬基於類的語言也更容易。缺點是擁有任何真正屬於客體的隱私是困難的(但並非不可能)。

  • 當您增加單個對象時,您在構建對象方式上有更大的靈活性。您通常可以通過使用關閉來實現私有狀態。缺點是每個對象都會獲得自己的函數對象副本,從而增加內存使用量。另一個缺點是對象更「特別」,並且用它們創建「類」層次結構更加困難。許多人認爲,創建這些層次往往不是必要的或無用的。

內存問題值得思考。當您創建數千個對象時,這意味着對象方法中有成千上萬個函數對象,而使用原型方法的函數對象數量會少得多。

+3

請舉一些例子(代碼片段)來區分類和對象增強。 –