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.