JS私有变量和静态私有变量

1.私有变量

function myObject() {
    var privateVariable = 10;
    function privateFun() {
    return false;
    }
    this.publicMethod = function() {
        privateVariable++;
        return privateFun();
    };
}
function Person(name) {
    this.getName = function() {
        return name;
    };
    this.setName = function(value) {
        name = value;
    };
}
var p = new Person("Kitty");
p.getName();
p.setName("haha");
p.getName();

缺点:仅仅使用构造函数,导致多个实例,对应多个方法,方法不能重用,从而用静态私有变量进行改进
2.静态私有变量

(function() {
    var privateVariable = 10;
    function privateFun() {
        return false;
    }
    // 构造函数
    myObject = function() {

    };
    myObject.prototype.publicMethod = function() {
        privateVariable++;
        return privateFun();
    }
})();
(function() {
    var name = "";
    Person = function(value) {
        name = value;
    };
    Person.prototype.setName = function(value) {
        name = value;
    }
    Person.prototype.getName = function() {
        return name;
    }
})();
// 在这个例子中,Person构造函数与getName()和setName()方法一样,都有权访问私有变量name,在这种模式下,变量name就变成了一个静态的、由所有实例共享的属性

以这种方式创建静态私有变量会因为使用原型而增进代码服用,但每个实例都没有自己的私有变量。到底是使用实例变量,还是静态私有变量,最终还要视具体需求而定;
3.模块模式: 为单例创建私有变量和特权方法(即访问私有变量的方法) 单例:只有一个实例对象,JS中的单例用对象字面量来表示

var singleton = function() {
    var privateVariable = 10;
    function privateFun() {
        return false;
    }

    return { // 返回的对象字面量中只包含可以公开的属性和方法
        publicProperty: privateVariable,
        publicMethod: function() {
            privateVariable++;
            return privateFun();
        }
    };
}();
singleton

这种模式在需要对单例进行某些初始化,同时又需要维护其私有变量时是非常有用的
4.增强模块模式:模块实例+单例必须是某种类型的实例

var singleton = function() {
    var privateVariable = 10;
    function privateFun() {
        return false;
    }

    // 创建对象
    var object = new customType(); // customType为一个对象类型, 暂且用new Object()代替
    object.publicProperty = privateVariable;
    object.publicMethod = function() {
        privateVariable++;
        return privateFun();
    };

    return object;
}();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值