每个字符串的javascript单例对象
我想创建一个对象,它是每个字符串的单例对象。例如,当我调用每个字符串的javascript单例对象,javascript,oop,singleton,design-patterns,Javascript,Oop,Singleton,Design Patterns,我想创建一个对象,它是每个字符串的单例对象。例如,当我调用myObject(“string1”)时,它总是返回相同的对象,但不同于myObject(“string2”),我想您应该这样做(在myObject(name)API示例之后): 试试这个 var MyObject = function(){ var objs = {}; return function(str){ if( objs[str] ){ return objs[str]
myObject(“string1”)
时,它总是返回相同的对象,但不同于myObject(“string2”)
,我想您应该这样做(在myObject(name)
API示例之后):
试试这个
var MyObject = function(){
var objs = {};
return function(str){
if( objs[str] ){
return objs[str];
}else{
objs[str] = function(){
//some code here
};
return objs[str];
}
};
}();
创建一个以字符串作为属性的对象,并指定任何适合的值:
var myObject = {
'string1': ... ,
'string2': ... ,
'string3': ... ,
...
};
然后通过字符串访问它们:
alert( myObject['string1'] ); // whatever
您想如何定义返回的对象?字符串不应该预定义,我想对每个字符串都使用它。它起作用了,但我不明白的是,为什么作为私有对象的objs是一个全局对象?为什么每次调用MyObject时,objs都没有设置为新的{}对象?请注意片段中的最后一个()。该函数将立即运行,MyObject实际上是内部函数。objs由内部函数中的引用持有,不会被销毁。它是javascript中的调用clouser。
alert( myObject['string1'] ); // whatever