モジュールを公開しようとしています。そのインスタンスを 1 つだけすべての呼び出し元に公開し、モジュールが呼び出されてインスタンス化されるまで待機したいと考えています。私はこれをやろうとしました:
var obj = {};
var foobar = function(){
var id=22;
function GetId(){ return ++id; }
return{ GetId: GetId };
};
obj.foobar = (function(){
if (obj.foobar instanceof foobar) {
return obj.foobar;
}
return new foobar();
})();
console.log(obj.foobar.GetId());//23
console.log(obj.foobar.GetId());//24
しかし、実際にはそれは難読化にすぎません
obj.foobar = new foobar();
私が意図していたのは、 が初めて呼び出されたobj.foobar = new foobar()
ときにインスタンス化することでした。2 回目は、既にインスタンス化されたバージョンを使用して呼び出されました。ここにはありませんが、インスタンス化を待機する必要があるため、すぐに実行できない依存関係があります。obj.foobar.GetId()
obj.foobar.GetId()
new foobar();
どうすればこれを達成できますか、何が欠けていましたか?