如何在嵌套對象中處理ownKeys的所有陷阱?Proxy - handler.ownKeys() - 嵌套對象
我只知道如何處理一個級別深度對象:
function wrap(obj, fn) {
var handler = {
ownKeys(target) {
fn(target)
return target
}
}
return new Proxy(obj, handler)
}
var origObj = {
a: {
b: {
c: 0
}
}
}
var wrappedObj = wrap(origObj, console.log)
Object.keys(wrappedObj) // => actual = expected: { a: { b: { c: 0 } } }
Object.keys(wrappedObj.a) // => actual: not working, expected: { b: { c: 0 } }
Object.keys(wrappedObj.a.b) // => actual: not working, expected: { c: 0 }
編輯1:
如果我試圖包裝每個內部對象(從這個answer),那麼它會記錄所有步驟不只是最後一個。通過「所有步驟」,我的意思是代理的內部過程貫穿整個嵌套對象,因此它多次觸發fn(target)
,但我只想觸發一次。
編輯2:
所以看起來,這個問題是與節點environmnent(節點版本8.1.4),其中proxy
看起來壞了。在Chrome控制檯中一切正常。
只有'origObj'被代理,內部對象不是。 –
是的,我知道這就是爲什麼我問我該怎麼做嵌套對象(我的英語爲sry)。 –
如果您不想以遞歸方式創建代理,則需要遍歷代理內的'target'。 – ftor