facility.progress = new Proxy(facility.progress, {
get: (target, prop) => Reflect.get(target, prop),
set: (target, prop, value) => {
Reflect.set(target, prop, value)
},
apply:(target, thisArg, argumentList){
}
})
JS Proxy & Promise can make await property
async function parseValue() {
await new Promise(resolve => setImmediate(resolve));
return "parsed value"
}
let proxy = new Proxy(myObject, {
get(target, prop, receiver) {
if (prop === "attribute") {
let newProp = prop + "_parsed"
if (!(newProp in target)) {
target[newProp] = parseValue()
}
return target[newProp]
} else {
return Reflect.get(target, prop, receiver)
}
},
})
await proxy.attribute
nested proxy
const coors: number[][] = [[]]
const handler: ProxyHandler<number[] & number[][]> = {
get(target, prop) {
console.log('get', target, prop)
if (target instanceof Array) return new Proxy(Reflect.get(target, prop), handler)
else return Reflect.get(target, prop)
},
set(target, prop, value) {
console.log('set', target, prop, value)
return Reflect.set(target, prop, value)
},
}
const proxy = new Proxy(coors, handler)
console.log(proxy)
proxy[1] = [1, 2]
console.log(proxy)
proxy[0][1] = 3
console.log(proxy)