Вот действительно простой синглтон без особых усилий. Это можно сделать по-настоящему защищенным способом, когда конструктор Cache на самом деле недоступен для внешнего мира. Скажите, если интересно.
function Cache() {
if ("instance" in arguments.callee)
throw "new instance is not desired";
var simpleCache = {};
this.set = function(key, data) {
simpleCache[key] = data;
};
this.get = function(key) {
return simpleCache[key];
};
};
Object.defineProperty(Cache, "instance", { value: new Cache(), writable: false });
Теперь вы звоните, как и ожидалось:
Cache.instance.set("key1", { a: "field1Value", b:12 });
Cache.instance.set("key2", new XMLHttpReuquest());