Я хочу создать объект, который будет одиночным на строку. Например, когда я вызываю myObject("string1"), он всегда возвращает один и тот же объект, но отличается от myObject("string2").
myObject("string1")
myObject("string2")
Создайте объект со строками в качестве свойств и назначьте любое подходящее значение:
var myObject = { 'string1': ... , 'string2': ... , 'string3': ... , ... };
Затем получите доступ к ним по строке:
alert( myObject['string1'] ); // whatever
Я думаю, что вы хотите сделать что-то вроде этого (следуя вашему примеру myObject(name) API):
myObject(name)
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"
попробуйте
var MyObject = function(){ var objs = {}; return function(str){ if( objs[str] ){ return objs[str]; }else{ objs[str] = function(){ //some code here }; return objs[str]; } }; }();