javascript одиночный объект на строку - PullRequest
1 голос
/ 29 июня 2011

Я хочу создать объект, который будет одиночным на строку. Например, когда я вызываю myObject("string1"), он всегда возвращает один и тот же объект, но отличается от myObject("string2").

Ответы [ 3 ]

1 голос
/ 29 июня 2011

Создайте объект со строками в качестве свойств и назначьте любое подходящее значение:

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

Затем получите доступ к ним по строке:

alert( myObject['string1'] ); // whatever
1 голос
/ 29 июня 2011

Я думаю, что вы хотите сделать что-то вроде этого (следуя вашему примеру 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"
0 голосов
/ 29 июня 2011

попробуйте

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

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