You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

22 lines
397 B

const watch = (target, callback)=>{
for(const key in target){
if(typeof target[key] === 'object'){
target[key] = watch(target[key], callback)
}
}
return new Proxy(
target,
{
set: (target, prop, newValue) => {
target[prop] = newValue
if(Array.isArray(target) && prop === 'length'){
return true
}
callback()
return true
}
}
)
}
export default watch