JavaScript/訪問控制
外觀
JavaScript 不提供直接控制訪問內部變數的方法,但是可以限制對某些變數的訪問。
預設情況下,物件內的變數是公共的,可以在程式碼中的任何地方修改。因此,任何將來使用該程式碼的程式設計師都可能意外地更改物件內部狀態,這可能會導致問題。雖然防止這種情況發生的最佳方法是妥善記錄你的程式碼(例如,註釋說明如何使用物件),但也有一些情況下你希望阻止直接訪問變數。
要宣告和使用私有變數,需要執行兩個步驟
- 使用以下語句在建構函式中宣告一個新變數var語句。
- 在建構函式中建立一個匿名函式,並將其作為物件的方法賦值。
以下示例顯示了一個私有欄位的使用
function MyObject() {
this.publicNumber = 10; // Public field.
var privateNumber = 20; // Private variable.
this.getPrivateNumber = function() {
return privateNumber;
}
}
testObject = new MyObject();
var privateNumber通常是一個僅在函式內部存在的區域性變數。如你所見,它在this.getPrivateNumber()中被訪問,這是一個匿名函式,嘗試直接訪問它會導致錯誤。由於此匿名函式在建構函式中宣告,因此它可以使用和修改在function MyObject中宣告的區域性變數,並在函式返回時保留對變數的引用。匿名函式繫結到物件的例項,建立新的 MyObject 將建立一個新的匿名函式,該函式引用新的privateNumber.
