单利模式2-一个简单的实例

<!DOCTYPE html>
<html lang="en">

    <head>
        <meta charset="utf-8" />
        <title>单利模式实例</title>
    </head>

    <body>
        <button id="login">登陆</button>
    </body>
    <script type="text/javascript">
        /*
          例如;用户登陆后;进入应用;正在应用的c页面;一段时间后,登陆过期;需要在c页面弹出一个可以重新登陆的弹框;
              在整个应用的任何页面;都有可能会弹出这个弹框;因为不能确定登录过期的时候用户会在应用的那个页面上
              因此;这个弹框就是个全局的;也可以说是唯一的
              用单利模式实现是这样的;
        */

        //管理单例的逻辑
        var getSingle = function(fn) {
            var result;
            return function() {
                return result || (result = fn.apply(this, arguments));
            }
        };

        //创建登陆的弹框
        var createLoginLayer = function() {
            var div = document.createElement('div'),
                aa = document.createElement('i');
            aa.innerHTML = '关闭';
            aa.setAttribute('class', 'close');
            aa.style.color = 'red';
            div.innerHTML = '我是登陆弹框';
            div.appendChild(aa);
            div.style.display = 'none';
            document.body.appendChild(div);
            return div;
        }

        var createSingleLoginLayer = getSingle(createLoginLayer);

        document.getElementById('login').onclick = function() {
            var loginLayer = createSingleLoginLayer();
            loginLayer.style.display = 'block';
        }

        var closeEle = document.getElementByClassName('close')[0];
        closeEle.onclick = function() {

        }
    </script>

</html>
原文地址:https://www.cnblogs.com/hanhui66/p/7110727.html