UNPKG

@kitmi/jacaranda

Version:

JavaScript application framework

42 lines (41 loc) 1.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _default; } }); class DeferredService { constructor(serviceFactory){ this.instance = null; // 创建一个 Proxy 来拦截属性和方法访问 return new Proxy(this, { get: (target, prop)=>{ // 延迟创建 service 实例 if (!target.instance) { target.instance = serviceFactory(); } // 获取实例上的属性或方法 const serviceInstanceProp = target.instance[prop]; // 如果是方法,返回一个绑定到实例的方法 if (typeof serviceInstanceProp === 'function') { return serviceInstanceProp.bind(target.instance); } // 否则返回属性值 return serviceInstanceProp; }, set: (target, prop, value)=>{ if (!target.instance) { target.instance = serviceFactory(); } target.instance[prop] = value; return true; } }); } } const _default = DeferredService; //# sourceMappingURL=DeferredService.js.map