@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
text/typescript
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={};