{"version":3,"sources":["../src/object/lazyObject.ts"],"names":["lazyObject","fn","obj","target","key","receiver","value"],"mappings":";;;;AAaO,SAASA,CAAAA,CAA6BC,EAAS,CAClD,IAAIC,EAeJ,OAdW,IAAI,MAAS,EAAC,CAAO,CAC5B,GAAIC,CAAAA,CAAAA,CAAOC,EAAIC,CAAS,CAAA,CACpB,OAAIH,CACAA,GAAAA,CAAAA,CAAMD,CAAG,EAAA,CAAA,CAEL,OAAQ,CAAA,GAAA,CAAIC,EAAIE,CAAG,CAC/B,EACA,GAAID,CAAAA,CAAAA,CAAOC,EAAIE,CAAMD,CAAAA,CAAAA,CAAS,CAC1B,OAAIH,CAAAA,GACAA,EAAMD,CAAG,EAAA,CAAA,CAEN,QAAQ,GAAIC,CAAAA,CAAAA,CAAIE,EAAIE,CAAK,CACpC,CACJ,CAAC,CAEL","file":"chunk-HVRTSSDL.mjs","sourcesContent":["/**\n * 创建一个代理对象\n * \n * const proxy = lazyObject(()=>{\n *    return obj\n * })\n * \n * 该代理对象会在第一次访问时调用回调函数，然后将回调函数的返回值作为代理对象\n * 后续就不再进行调用\n * \n */\n\n\nexport function lazyObject<T extends object>(fn:()=>T){\n    let obj:T\n    const r =  new Proxy<T>({} as T,{\n        get(target,key,receiver){\n            if(!obj){\n                obj = fn() \n            }\n            return  Reflect.get(obj,key)\n        },\n        set(target,key,value,receiver){\n            if(!obj){\n                obj = fn()    \n            }\n            return Reflect.set(obj,key,value)\n        }\n    })\n    return r\n}\n\n// let obj = lazyObject(()=>{\n//     return {a:1,b:2}\n// })\n\n// console.log(obj.a) \n\n// console.log(obj.a) \n"]}