轉自: http://www.rainleaves.com/html/1684.html
javascript靜態類簡單來說就是不用通過new來建立的類,可以直接使用,就像javascript的內建全域類,如Math、Object一樣。
javascript靜態類寫法
var myClass = { name: "雨打浮萍", value: "http://www.rainleaves.com", run: function(){ alert("run"); }}
這樣就可以實現一個基本的javascript靜態類寫法,但基本沒什麼意義,無非是啥定義幾個變數。
我們換個javascript靜態類寫法
var myClass = (function(){ var _name = "雨打浮萍"; var _value = "http://www.rainleaves.com"; var privateValue = "rainleaves"; var main = function(){ alert(this.name); alert(_name); myMethod(); }; var myMethod = function(){ alert(privateValue); } return{ name:_name, value:_value, main:main }})();
這樣,通過 (function(){ return{} })();閉包的形式,返回一個類,賦值給myClass。這樣就可以通過閉包營造一個私人環境,保護
privateValue等私人屬性,可以是代碼更結構化。
在此段代碼中_name,_value通過引用賦值給myMethod.name和myMethod.value,同時main方法也被公開為公有屬性,而privateValue和myMethod一直為私人方法,隱藏在閉包之內。
運行
myClass.main();//運行結果:列印兩次雨打浮萍,一次rainleavesmyClass.name = "雨打浮萍Rainleaves";myClass.main();//運行結果:分別列印雨打浮萍Rainleaves、雨打浮萍、rainleaves
在實際使用中,我們通過JavaScript靜態類來將每一個頁面的邏輯分別封轉在不同的類中,相互不干擾,同時還可以在最這些類定義到一個總的靜態類中,實現代碼塊狀化,結構清晰。如:
var Manage = {};Manage.myClass = (function(){ return{} })();Manage.myClass2 = (function(){ return{} })();...