我正在尝试包装一个对象,以确定谁在更改它。我尝试使用Proxy
对象执行此操作,但出现一个奇怪的错误:
const wrap = object => {
const handler = {
get(obj, prop) {
return wrap(obj[prop])
},
set(obj, prop, value) {
debugger;
return Reflect.set(obj, prop, value)
}
};
return new Proxy(object, handler)
}
我运行obj = wrap(obj)
,然后启动我的函数,但随后引发错误:
TypeError: Cannot create proxy with a non-object as target or handler
我在做什么错了?
答案 0 :(得分:0)
如果obj
的属性不是对象,则递归包装将不起作用。
检查obj是否是对象:
const wrap = object => {
const handler = {
get(obj, prop) {
return wrap(obj[prop])
},
set(obj, prop, value) {
debugger;
return Reflect.set(obj, prop, value)
}
};
return _.isObject(object) ? new Proxy(object, handler) : object
}