zoukankan      html  css  js  c++  java
  • JavaScript 惰性实例化代码

    惰性实例化要解决的问题是:避免了在页面中 JavaScript 初始化执行的时候就实例化类,如果在页面中没有使用这个实例化的对象,就会造成一定的内存浪费和性能消耗。如果将一些类的实例化推迟到需要使用它的时候才去做,就可以避免资源过早损耗,做到 “按需供应”。

     

    // 惰性实列化代码如下
    var myNamespace = function(){
        var Configure = function(){
            var privateName = "tugenhua";
            var privateGetName = function(){
                return privateName;
            };
            var privateSetName = function(name) {
                privateName = name;
            };
            // 返回单列对象
            return {
                setName: function(name) {
                    privateSetName(name);
                },
                getName: function(){
                    return privateGetName();
                }
            }
        };
        // 存储Configure实列
        var instance;
        return {
            init: function(){
                // 如果不存在实列,就创建单列实列
                if(!instance) {
                    instance = Configure();
                }
                // 创建Configure单列
                for(var key in instance) {
                    if(instance.hasOwnProperty(key)) {
                        this[key] = instance[key];
                    }
                }
                this.init = null;
                return this;
            }
        }
    }();
    // 调用方式
    myNamespace.init();
    var name = myNamespace.getName();
    console.log(name); // tugenhua

    如上代码是惰性化实列代码:它包括一个单体 Configure 实列,直接返回 init 函数,先判断该单体是否被实列化,如果没有被实列化的话,则创建并执行实列化并返回该实列化,如果已经实列化了,则返回现有实列;执行完后,则销毁 init 方法,只初始化一次

     

    参考:理解惰性实列化

     

  • 相关阅读:
    函数式编程一
    学习设计模式笔记
    看萧井陌直播写代码有感
    自定义事件
    template模板函数
    一个自己写的table插件,用到了一些ES6的语法
    requireJs简介
    underscore
    angular4.0
    New Machine Learning Server for Deep Learning in Nuke(翻译)
  • 原文地址:https://www.cnblogs.com/xiaochechang/p/5985424.html
Copyright © 2011-2022 走看看