每个字符串的javascript单例对象

时间:2011-06-29 06:36:54

标签: javascript oop singleton design-patterns

我想创建一个每个字符串为singleton的对象。例如,当我调用myObject("string1")时,它始终返回相同的对象,但与myObject("string2")不同。

3 个答案:

答案 0 :(得分:1)

我认为你想做这样的事情(遵循你的myObject(name) API示例):

var myObject = (function (){
  var objects = {
    "myString1": {
      name: "myString One Object"
      //...
    },
    "myString2": {
      name: "myString Two Object"
      //...
    }
  };
  //...
  return function (name) { // the actual function
    return objects[name];  // that retrieves the object
  };                       // by its "name" (e.g. 'myString1')
})();


myObject("myString1").name;  // "myString One Object"
myObject("myString1") === myObject("myString1"); // true, the same object ref.
myObject("myString2").name;  // "myString Two Object"

答案 1 :(得分:1)

使用字符串作为属性创建一个对象,并指定适合的值:

var myObject = {
  'string1': ... ,
  'string2': ... ,
  'string3': ... ,
   ...
};

然后通过字符串访问它们:

alert( myObject['string1'] ); // whatever

答案 2 :(得分:0)

试试这个

var MyObject = function(){
    var objs = {};

    return function(str){
        if( objs[str] ){
            return objs[str];
        }else{
            objs[str] = function(){
                //some code here
            };
            return objs[str];
        }
    };
}();