mirror of
https://github.com/alibaba/lowcode-engine.git
synced 2026-06-04 06:30:59 +00:00
20 lines
678 B
TypeScript
20 lines
678 B
TypeScript
function makeProxy(target: { [name: string]: any }, meta: any = {}): any {
|
|
if (target.__isProxy) {
|
|
const value = target.__getRaw();
|
|
const rawMeta = target.__getMeta();
|
|
return makeProxy(value, Object.assign({}, rawMeta, meta));
|
|
}
|
|
return new Proxy(target, {
|
|
get: (obj, prop: string | number) => {
|
|
if (prop === '__isProxy') return true;
|
|
if (prop === '__getRaw') return () => target;
|
|
if (prop === '__getMeta') return () => meta;
|
|
return meta.hasOwnProperty(prop) ? meta[prop] : obj[prop];
|
|
// return obj[prop];
|
|
},
|
|
has: (obj, prop) => obj.hasOwnProperty(prop) || meta.hasOwnProperty(prop),
|
|
});
|
|
}
|
|
|
|
export default makeProxy;
|