閉包(Closure)的細節(二):模擬私有變數

閉包(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推薦載入中