跳转到内容

JavaScript/访问控制

来自维基教科书,开放的书籍,开放的世界


访问控制

[编辑 | 编辑源代码]

JavaScript 不提供直接控制访问内部变量的方法,但是可以限制对某些变量的访问。

默认情况下,对象内的变量是公共的,可以在代码中的任何地方修改。因此,任何将来使用该代码的程序员都可能意外地更改对象内部状态,这可能会导致问题。虽然防止这种情况发生的最佳方法是妥善记录你的代码(例如,注释说明如何使用对象),但也有一些情况下你希望阻止直接访问变量。

要声明和使用私有变量,需要执行两个步骤

  • 使用以下语句在构造函数中声明一个新变量var语句。
  • 在构造函数中创建一个匿名函数,并将其作为对象的方法赋值。


Clipboard

要完成
清理示例;它目前纯粹是合成和任意的。


以下示例显示了一个私有字段的使用

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.


华夏公益教科书