美文网首页
javascrip之单例模式----2022-11-19

javascrip之单例模式----2022-11-19

作者: 前端Tree | 来源:发表于2022-11-18 23:53 被阅读0次
    // 1、命名空间
    // 解决的问题:明明空间解决了人们定义变量的时候起名冲突或者词汇匮乏的问题
    var Ming = { 
        g: function(id) {
            return document.getElementById(id)
        },
        css: function(id, key, value) {
            // 简单样式属性设置
            this.g(id).style[key] = value
        }
    }
    
    // 2、模块分明
    // 通过单例模块来管理代码库的各个模块
    // 比如
    // baidu.dom.addClass  // 添加元素类
    // baidu.dom.append  // 插入元素
    // baidu.event.stopPropagation   // 阻止冒泡
    // baidu.event.preventDefault   // 阻止默认行为
    // baidu.event.trim //去除字符串收尾空白字符
    // baidu.event.encodeHTML // 将字符串进行html 编码
    
    // 3、创建小型代码库
    // 例如库A
    var A= {
        Util : {
            util_method1: function(){},
            util_method2: function(){}
        },
        Tool : {
            util_method1: function(){},
            util_method2: function(){}
        },
        Ajax: {
            get: function(){ } ,
            post: function(){ } ,
        },
        others: {
    
        }
    }
    // 加入要使用的时候
    A.Util.util_method1()
    A.Tool.util_method1()
    A.Ajax.get()
    
    // 定义无法修改的静态变量
    var Conf = (function(){
        // 私有变量
        var conf = {
            MAX_NUM: 100,
            MIN_NUM: 1,
            COUNT: 10000
        }
        // 返回取值器对象
        return {
            // 取值器方法
            get: function(name) {
                return conf[name]? conf[name]: null;
            }
        }
    })();
    // 为了实现创建后就能使用,我们就需要让匿名函数执行一次
    
    // 用例:
    var count = Conf.get('COUNT')
    console.log(count)
    
    // 4、惰性单例
    // 惰性载入单例
    var LazySingle = (function() {
        // 单例实例引用
        var _instance = null;
        // 单例
        function Single () {
            // 这里定义私有属性和方法
            return {
                publicMethod: function() {},
                publicProperty: '1.0'
            }
        }
        // 获取单利对象接口
        return function() {
            // 如果为创建单例将创建单例
            if(!_instance) {
                _instance = Single();
            }
            // 返回单例
            return _instance
        }
    })();
    
    // 测试一下
    console.log(LazySingle().publicProperty)
    
    
    

    相关文章

      网友评论

          本文标题:javascrip之单例模式----2022-11-19

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