5

javascript之私有变量

 3 years ago
source link: https://zwkang.com/?p=319
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

javascript之私有变量

<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 />

Comments

发表评论 取消回复

电子邮件地址不会被公开。 必填项已用*标注

评论

姓名 *

电子邮件 *

站点

在此浏览器中保存我的名字、电邮和网站。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK