繁体   English   中英

JavaScript-单例类是什么样的?

[英]JavaScript - What is a singleton class looks like?

我有2个对象:我想知道他们是否是辛格尔顿?

一种。

var OBJ = function () {
}

OBJ.prototype = {
    setName : function (name) {
        this.name = name;
    },
    getName : function () {
        return this.name;
    }
}

b。

var OBJ = {
     setName : function (name) {
         this.name = name;
     },
     getName : function () {
        return this.name;
     }
}

您可以通过创建两个类实例并进行比较来进行检查:

 Print( a === b ); // prints: true

如果打印的true类是singleton

或者,您可以为SingletonPattern尝试以下代码:

function MyClass() {

  if ( arguments.callee._singletonInstance )
    return arguments.callee._singletonInstance;
  arguments.callee._singletonInstance = this;

  this.Foo = function() {
    // ...
  }
}

var a = new MyClass()
var b = MyClass()
Print( a === b ); // prints: true

单例模式的最佳解决方案

这将帮助您How to write a singleton class in javascript

 function Cats() {
    var names = [];

    // Get the instance of the Cats class
    // If there's none, instanciate one
    var getInstance = function() {
        if (!Cats.singletonInstance) {
            Cats.singletonInstance = createInstance();
        }
        return Cats.singletonInstance;
    }
    // Create an instance of the Cats class
    var createInstance = function() {
        // Here, you return all public methods and variables
        return {
            add : function(name) {
                names.push(name);
                return this.names();
            },
            names : function() {
                return names;
            }
        }
    }
    return getInstance();
}

有关http://www.javascriptkata.com/2009/09/30/how-to-write-a-singleton-class-in-javascript/的更多信息

也有可能重复Javascript:最佳的Singleton模式在JavaScript中实现 Singleton的 最简单/最简洁的方法?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM