Skip to content

Instantly share code, notes, and snippets.

@ycmjason
Created February 26, 2020 16:26
Show Gist options
  • Save ycmjason/41bec02b8f0cb8b0a4c920d4f815879f to your computer and use it in GitHub Desktop.
Save ycmjason/41bec02b8f0cb8b0a4c920d4f815879f to your computer and use it in GitHub Desktop.
const target: Record<any, any> = {}
const p = new Proxy(target, {
set(setTarget, key: string | number, value) {
console.log(`=== start p.${key} = ${value} ===`)
console.log(`setTarget === target -> ${setTarget === target}`)
console.log({ key, value })
setTarget[key] = value
console.log(`=== end p.${key} = ${value} ===`)
return true
},
get(setTarget, key: string | number) {
console.log(`=== start getting p.${key}} ===`)
console.log(`getting setTarget[${key}]: ${setTarget[key]}`)
console.log(`=== end getting p.${key}} ===`)
return 'nope'
}
})
p.x = 3 // will trigger set trap
console.log()
target.x = 5 // will not trigger trap
console.log(`p.x: ${p.x}`) // will trigger get trap
console.log()
console.log(`p.y: ${p.y}`) // will trigger get trap
console.log()
console.log(target)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment