访问控制

JavaScript 并没有提供直接的方式来控制对内部变量的访问,但可以通过某些方法限制对某些变量的访问。

默认情况下,对象中的变量是公开的,并且可以在代码中的任何地方修改。因此,任何将来使用该代码的程序员都可能意外地改变对象的内部状态,这可能会导致问题。虽然最简单的保护方法是适当地对代码进行文档化(例如,注释显示如何使用对象),但有时你可能希望阻止对某个变量的直接访问。

要将变量声明为私有并使用它,需要进行两个步骤:

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

以下是使用私有字段的示例:

function MyObject() {
  this.publicNumber = 10;  // 公有字段。
  var privateNumber = 20;  // 私有变量。

  this.getPrivateNumber = function() {
    return privateNumber;
  }
}

testObject = new MyObject();

在这个例子中,privateNumber 通常是一个局部变量,只在函数内部存在。正如你所看到的,它通过 this.getPrivateNumber() 这个匿名函数来访问,直接访问它会导致错误。由于这个匿名函数是在构造函数中声明的,它可以使用并修改在 MyObject 函数中声明的局部变量,并且即使函数返回,匿名函数仍然会保持对该变量的引用。这个匿名函数绑定到对象的实例上,创建一个新的 MyObject 实例时,会创建一个新的匿名函数,指向新的 privateNumber

最后修改: 2025年01月13日 星期一 15:06