Javascript面向对象编程指南(六)——getter和setter

接下来再让我们看两个关于闭包的应用示例。首先是创建getter和setter。假设现在有一个变量,它所表示的是某类特定值,或某特定区间内的值。我们不想将该变量暴露给外部。因为那样的话,其他部分的代码就可以有直接修改它的可能,所以我们需要将它保护在相关函数的内部,然后提供两个额外的函数——一个用于获取变量值,一个用于给变量重新赋值。并在函数中引入某种验证措施,以便在赋值之前给予变量一定的保护。另外,为了简洁起见,我们对该类中的验证部分进行了简化;即这里只处理数字值。

我们需要将getter喝setter这两种函数放在一个共同的函数中,并在该函数中定义secret变量,着使得两个函数能够共享同一个作用域,具体代码如下:

var getValue, setValue;
(function
  var secret = 0;
  getValue = function () {
    return secret;
  };
  setValue = function (v) {
    if (typeof v === "number") {
      secret = v;
    }
  }
} () );

在这里,所有一切都是通过一个即时函数来实现的,我们在其中定义了全局函数setValue()和getValue(),并以此来确定局部变量secret的不可直接访问性。

getValue();  // 0
setValue(123)  // 123
getValue()  // 123

setValue(false);
getValue();  // 123

你可能感兴趣的:(Javascript面向对象编程指南(六)——getter和setter)