美文网首页
JacaScript 私有变量(四)增强的模块模式

JacaScript 私有变量(四)增强的模块模式

作者: BertFu | 来源:发表于2016-11-25 07:55 被阅读30次

有人进一步改进了模块模式,即在返回对象之前加入对其增强的代码。这种增强的模块模式适合那些单例必须是某种类型和的实例,同时还必须添加某些属性和(或)方法对其加以增强的情况。

var singleton = function() {
    // 私有变量和私有函数
    var privateVariable = 10;

    function privateFunction() {
        return false;
    }

    // 创建对象
    var object = new CustomType();

    // 添加特权/公有属性和方法
    object.publicProperty = true;

    object.publicMethod = function() {
        privateVariable++;
        return privateFunction();
    }

    return object;
}

如果 application 对象必须是 BaseComponent (不用去关心 BaseComponent 代码是如何实现的) 实例:


var application = function() {
    // 私有变量和函数
    var components = new Array();

    // 初始化
    components.push(new BaseComponent());

    // 创建 application 的一个副本
    var app = new BaseComponent();

    app.getComponentCount = function() {
        return components.length;
    }

    app.registerComponent: function(component) {
        if(typeof component == "object") {
            components.push(component);
        }
    }

    // 公共
    return app;
}();

在这个重写后的应用程序(application)单例中,首先也是像前面例子中一样定义了私有变量。主要不同之处在于命名变量 app 的创建过程,因为它必须是 BaseComponent 的实例。

这个实例实际上是 application 对象的局部变量版。此后,我们又为 app 对象添加了能够访问私有变量的公有方法。

最后一步是返回 app 对象,结果仍然是将它赋值给全局变量 application。

相关文章

  • JacaScript 私有变量(四)增强的模块模式

    有人进一步改进了模块模式,即在返回对象之前加入对其增强的代码。这种增强的模块模式适合那些单例必须是某种类型和的实例...

  • JavaScript作用域

    1.块级作用域 2.私有变量 3.静态私有变量 4.模块模式 5.增强的模块模式

  • JacaScript 私有变量(三)模块模式

    模块模式是为单例创建私有变量和特权方法。所谓单例,指的就是只有一个实例对象。按照惯例, JavaScript 是以...

  • 【JS第33期】设计模式-模块模式

    模块模式通过为单例添加私有变量和特权方法能够使其得到增强,语法如下: 增强模块模式 增强模块模式,即在返回对象之前...

  • JS设计模式三:模块模式

    模块模式简述 模块模式是为单例模式添加私有变量和私有方法,并减少全局变量的使用;如下就是一个模块模式的代码结构: ...

  • JacaScript 私有变量(二)静态私有变量

    通过在私有作用域中定义私有变量或函数,同样也可以创建特权方法: 这个模式创建了一个私有作用域,并在其中封装了一个构...

  • 模块模式

    模块模式 模块 模式实在单例对象上加上扩展,通过作用域链来关联私有变量和特权方法对象字面量封装模块,闭包实现私有和...

  • JacaScript 私有变量(一)什么是私有变量

    严格来讲,JavaScript 中没有私有成员的概念;所有对象属性都是公有的。不过,倒是有一个私有变量的概念。 任...

  • 2018-12-07

    7.4.2 模块模式 前面的模式是用于为自定义类型创建私有变量和特权方法的。而道格拉斯所说的模块模式则是为单例创建...

  • 私有成员和特权方法

    模块模式:用于创建拥有私有数据的单件对象的模式 使用IIFE返回一个对象 暴露模块模式 构造函数的私有成员 模块模...

网友评论

      本文标题:JacaScript 私有变量(四)增强的模块模式

      本文链接:https://www.haomeiwen.com/subject/lfpipttx.html