JS设计模式之---单例模式

  • 单例模式是保证一个类仅有一个实例,并提供一个访问它的全局访问点。
  • 单例模式在现在面向对象的语言Java,C#,C++等等中也有很多用到,其实它在Javascript中使用同样非常广泛。
var CreateDiv = function (html) {
            this.html = html;
            this.init();
        };
        CreateDiv.prototype.init = function () {
            var div = document.createElement('div');
            div.innerHTML = this.html;
            document.body.appendChild(div);
        };
        var ProxySingletonCreateDiv = (function () {
            var instance;
            return function (html) {
                if (!instance) {
                    instance = new CreateDiv(html);
                }
                return instance;
            };
        })();
        var a = new ProxySingletonCreateDiv('test1');
        var b = new ProxySingletonCreateDiv('test2');
        console.log(a===b);//true  页面只会创建 test1
  •  我们继续抽离代码,使之更为通用
 var getSingle = function (fn) {
            var result;
            return function () {
                return result ||(result=fn.apply(this, arguments));
            }
        };
  • 我们把生成单例的逻辑抽离出来,将函数作为一个变量参数进行传入,这样以后只需要新建对应的函数就好,这段代码就完全通用了,这个跟Jquery 中one 函数类似。
原文地址:https://www.cnblogs.com/meiyh/p/6433973.html