閉包(Closure)的細節(二):模擬私有變數
- 詳細內容
- 分類:Javascript
- 發佈:2013-07-02, 週二 21:21
- 點擊數:1860
閉包(Closure)的細節(二),模擬私有變數:
Javascript身為一個物件導向的語言,卻很特別的沒有原生地宣告私有變數的方法。不過這個問題可以藉由閉包的特點來補足。閉包的特點之一就是閉包內的變數只能由閉包的函式來存取。這與私有變數的特性相同。
我們用一個例子來看看私有變數(或函式 本例沒有使用到)與公開函式:
<script type="text/javascript"> function map(){ var type="Defaut" return { settype : function (str){ type=String(str); } , gettype : function(){ return type; } } } var mymap=map(); alert(mymap.gettype()); // 顯示 Defaut mymap.settype("沙漠"); alert(mymap.gettype()); // 顯示 沙漠 </script>
map() 函式傳回了一個物件,包含了個函式 settype(),與gettype(),很明顯這兩個都是閉包函式。從 閉包(Closure)的細節:共用與非共用變數 中知道,2個函式可以共用閉包內的變數。所以這範例形成了一個私有變數 type ,與兩個公開函式settype(),與gettype()。
其他:
如果你想更了解其他閉包觀念,可以參考看看下面這篇文章:閉包(Closure)的基本概念。
我把許多閉包的觀念與用法都收集在這篇文章內。
按個讚!~支持本站!~
FB推薦載入中