JavaScript 類別物件(5)- 類別內部欄位存取


結合函式成員的配置,我們可以設計私有欄位,以避免外部程式異動類別內部的欄位值。考慮以下的函式設計:

function NumberTest() {
var a =  2 ;
this.b = 1024;
}

其中a變數是函式的成員,另外b則是實體物件成員,現在建立一個 NumberTest 物件,並且嘗試對 a 與 b 進行存取如下:

var n = new NumberTest();
console.log(n.a);
console.log(n.b);

n.a 試圖取得 a 的值,而 n.b 則取得 b 的值,這兩個值是後被輸出於控制台,結果如下:

undefined
1024

由於 a 無法透過物件取出,因此第一個輸出是未定義的值,第二個 b 是實體物件成員,因此直接被取出,輸出值為 1024 。我們可以進一步的設計方法成員,間接取得a這個欄位值,現在擴充 NumberTest() 函式內容如下:

<script>
    function NumberTest() {
        var a = 2;
        this.b = 1024;
        this.geta = function () { return a; }
    }
    var n = new NumberTest();
    console.log(n.b);
    console.log(n.geta());
</script>

於函式中新增一個實體方法成員 geta() ,此成員回傳變數a的值,如此一來我們可以透過 geta() 的調用,取得 a 這個值。


沒有留言: