2016年9月1日 星期四

Javascript的封裝細節-私有變數、函數內呼叫自己

在js中,使用物件導向的風格撰寫,並沒有明確的關鍵字可以設定priveat, public的權限。
而如何製造出private的權限呢?
像下面的code
var coder = function(){
    this.coding = function (n) {
        return n > 1 ? this.coding (n-1) + "-click" : "click";
    }//coder.coding(n)
}//constructor
是可以直接coder.coding()。coder就會認命的執行coding。
想要把coding設為私有,要怎麼做呢?
var coder = function(){
    var private_name1 = function function_name(n) {
        return n > 1 ? function_name (n-1) + "-click" : "click";
    }

    var private_name2 = private_name1;
    private_name1 = null;

    this.coding = function(n) {
        if (n < 10)
        {
            return private_name2(n);
        }
    }//coder.coding(3)
}//constructor
這裡,我做了一點手腳。
在建構式裡寫的var 變數,就已經成為該類別的私有變數。
但是為了讓函數呼叫自己的正確性提高。特別使用兩個私有變數,並且讓函式指定給第二個變數,靠第二個變數來運作。
在function_name函數內,呼叫自己的函數名稱,才不會因為這樣互相指定來指定去的失去效用。

沒有留言:

張貼留言