0

我已經看到了揭示模塊模式,以及原型類模式。我把這兩種方法合二爲一,形成了一種暴露的階級模式。我試圖弄清楚這種模式是否有任何問題,或者是無法解決的問題。只要該對象的構造函數是typeof「function」,我會認爲不會有任何問題。揭示類模式vs原型方法?

我唯一可以提出的告誡是一個高容量的實例化類,其中私有函數在每次創建新類時都會創建。這可能會導致數千個實例的內存問題。對於那些內存中沒有的大型類,儘管如此,我的想法是更簡單的代碼可讀性和安全性可能是有益的。通過使功能保持私密並顯示它們,混淆器將所有內部功能最小化,從而使窺視者難以窺探。當然,這不是萬無一失的,但只是一個額外的保護層。另外,能夠私密地在函數內部工作,在類中刪除數百個「this」。也許這是一個小優勢,但對於複雜的代碼,它有助於提高可讀性。有人看到這種模式的任何主要問題?

//standard pattern 

var MyClass = function() { 
    this.func1 = function() { 
     //dostuff 
    }; 
}; 
MyClass.prototype.func2 = function() { 
    this.func1(); 
    //dostuff 
}; 

-

//revealing class pattern 

var MyClass = function() { 
    function privateFunc() { 
     //dostuff 
    } 

    function publicFunc() { 
     privateFunc(); 
     //dostuff 
    } 

    this.publicFunc = publicFunc; 
}; 
+0

使用任何作品*爲你*。沒有絕對。 – zerkms

+1

請參閱[在JavaScript中使用'prototype'與'this'?](http://stackoverflow.com/q/310870/218196)以及其他相關問題。 –

回答

1

我見過的啓迪模塊模式,以及爲原型類模式。我把這兩種方法合二爲一,形成了一種暴露的階級模式。

你應該看看露出原型模式從而真正將它們組合以揭示類。你現在有什麼應該被稱爲「揭示實例模式」。

有人看到模式的任何主要問題?

你已經指出了主要的警告,但如果你認爲它值得,那就去吧。鑑於大多數類是而不是實例化在非常大的數量,這並沒有真正有所作爲。

但是,你可以改善你的模式。鑑於你不再使用原型,沒有理由保留它。刪除new運算符,在構造函數中使用關鍵字this,並返回對象文字。 Voilá,你有一個工廠功能