kangkangblog

Menu

javascript之私有变量

对于javascript所有对象属性都是公有的

但是在函数外部无法访问函数内部定义的变量

这个就是一个私有变量的概念

私有变量

function xxx(){
    var key = 10;//私有变量
    function xxxxx(){
        //私有函数
    }
}
var keys = new xxx();
alert(keys.key);undefined

//无法直接访问到私有变量

function xxx(){
    var key = 10;//私有变量
    this.key=20;//共有变量
    function xxxxx(){
    //私有函数
    }
}
var keys = new xxx();
alert(keys.key);//20

这是一种构造器函数

我们可以用这种函数方式来创建对象

上面即是例子特权方法是通过闭包来进行操作私有变量的

在此时实例化这个构造函数创建对象的时候

实例对象不能直接调用key跟TestFun函数的

这一点在隐藏变量的时候也是极为有用

定义特权方法的坏处是每一次创建实例化都需要创建一组新方法

而静态私有变量可以避免这种方法

(function(){
    var key = 10;//私有变量
    this.key=20;//共有变量

    Myobject = function(){

    }

    function xxx(){

    }

    MyObject.prototype.publicxxx=function(){

    key++;

    return xxx();

    }

})();

静态私有变量

私有作用域内创建私有变量
再加上一个构造函数
在构造函数的原型上添加定义方法
每次调用实际上都是在使用原型 创建一次即可
但是也会影响到共享的属性
(私有变量会变成一个静态的 由所有实例共享的属性 )

(代价是每个实例实际上都没有了自己的“私有变量”)

That's all

— 于 共写了779个字
— 文内使用到的标签:

发表评论

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