什么是私有变量?
在javascript中没有公有成员的概念,所有的属性都是公有的。但是,在函数中定义的变量都可以认为是私有变量,因为不能再函数的外部访问这些变量。
私有变量包括函数的参数,局部变量和在函数内部定义的其他函数。
function add(num1,num2){
var sum = num1 + num2;
return sum;
}
在函数内部可以访问这几个参数、变量,在函数外面访问不了!
如果在这个函数内部创建一个闭包,那么闭包通过自己的作用域链就可以访问这些变量。
- 利用这一点就可以创建用于访问私有变量的公有方法了
我们把有权访问私有变量和私有函数的公有方法称为特权方法
方法一:在构造函数中创建特权方法
function myObject(){
// 私有变量
var privateVariable = 10;
// 私有函数
function privateFunction() {
return false;
}
// 特权方法
this.publicMethod = function(){
privateVariable++;
return privateFunction();
}
}
这个模式是在构造函数内部定义了私有变量和函数,又创建了能够访问这些私有变量和函数的特权方法。
能够在构造函数内部定义特权方法,是因为特权方法作为闭包有权访问在构造函数内定义的私有变量和私有函数。