<strong>对于javascript所有对象属性都是公有的</strong>
<strong>但是在函数外部无法访问函数内部定义的变量</strong>
<strong>这个就是一个私有变量的概念</strong>
<br />
私有变量
function xxx(){
var key = 10;//私有变量
function xxxxx(){
//私有函数
}
}
var keys = new xxx();
alert(keys.key);undefined
//无法直接访问到私有变量
<div>
<br />
</div>
<div>
function xxx(){
</div>
<div>
var key = 10;//私有变量
</div>
<div>
this.key=20;//共有变量
</div>
<div>
function xxxxx(){
</div>
<div>
//私有函数
</div>
<div>
}
</div>
<div>
}
</div>
<div>
var keys = new xxx();
</div>
<div>
alert(keys.key);//20
</div>
<div>
<br />
</div>
这是一种构造器函数
我们可以用这种函数方式来创建<strong>对象</strong>
上面即是例子特权方法是通过闭包来进行操作私有变量的
在此时实例化这个构造函数创建对象的时候
实例对象不能直接调用key跟TestFun函数的
<div>
这一点在隐藏变量的时候也是极为有用
</div>
定义特权方法的坏处是每一次创建实例化都需要创建一组新方法
而静态私有变量可以避免这种方法
<div>
(function(){
</div>
<div>
var key = 10;//私有变量
</div>
<div>
this.key=20;//共有变量
</div>
<p>
Myobject = function(){
}
function xxx(){
}
MyObject.prototype.publicxxx=function(){
key++;
return xxx();
}
<div>
})();
</div>
<h3>
静态私有变量
</h3>
<div>
私有作用域内创建私有变量
</div>
<div>
再加上一个构造函数
</div>
<div>
在构造函数的原型上添加定义方法
</div>
<div>
每次调用实际上都是在使用原型 创建一次即可
</div>
<div>
但是也会影响到共享的属性
</div>
<div>
(私有变量会变成一个静态的 由所有实例共享的属性 )
</div>
<p>
(代价是每个实例实际上都没有了自己的“私有变量”)
<br />
<h1>
That's all
</h1>
<br />