UNPKG

@suyouwanggang/p-ui

Version:

`p-ui`是一套使用原生`Web Components`规范开发的跨框架UI组件库,基于`lit-elment`库开发。 [github项目地址](https://github.com/suyouwanggang/p-ui)

48 lines (40 loc) 1.51 kB
const numberRegMap = new Map<Number, RegExp>(); const numberReg = /([0-9]+)[\.0-9]*/; export const getNumberReg = function (scale: number): RegExp { if (scale == 0) { return numberReg; } else { let result = numberRegMap.get(scale); if (result === undefined) { result = new RegExp('([0-9]+\\.[0-9]{' + scale + '})[0-9]*'); numberRegMap.set(scale, result); } return result; } }; var arr = [1,2,3] var handle: ProxyHandler<any[]|Object>= { //target目标对象 key属性名 receiver实际接受的对象 get(target:any[]|Object ,key:PropertyKey ,receiver:any ) { console.log(`get ${key as string }`) // Reflect相当于映射到目标对象上 return Reflect.get(target,key,receiver) }, set(target:any[]|Object ,key:PropertyKey,value:any,receiver) { console.log(`set ${key as string }`) return Reflect.set(target,key,value,receiver) } } //arr要拦截的对象,handle定义拦截行为 var proxy:any[]= new Proxy(arr,handle) as any[]; proxy.push(4) //可以翻到控制台测试一下会打印出什么 let handler :ProxyHandler<any>= { get (target:any, key:PropertyKey, receiver:any) { // 递归创建并返回 if (typeof target[key] === 'object' && target[key] !== null) { return new Proxy(target[key], handler) } return Reflect.get(target, key, receiver) } } let obj={};