2016-03-26 6 views
0

Я пытаюсь перехватить get и установить операции с использованием прокси. Настройка работает отлично, но триггеры «RangeError: максимальный размер стека вызовов превышены» в бесконечном цикле. Я пытаюсь просто регистрировать во время перехвата и возвращать поведение по умолчанию.Прокси Получение RangeError

Рабочая:

testobject = {} 
 
testobject = new Proxy(testobject, { 
 
set(target, property, value, receiver) { 
 
    console.log("setting", target, property, value, receiver) 
 
    return(Reflect.set(target, property, value, receiver)) 
 
} 
 
}) 
 
testobject.done = true 
 
console.log(testobject.done)

Сломанный:

testobject = {} 
 
testobject = new Proxy(testobject, { 
 
get(target, property, receiver) { 
 
    console.log("getting", target, property, receiver) 
 
    return(Reflect.get(target, property, receiver)) 
 
}, 
 
set(target, property, value, receiver) { 
 
    console.log("setting", target, property, value, receiver) 
 
    return(Reflect.set(target, property, value, receiver)) 
 
} 
 
}) 
 
testobject.done = true 
 
console.log(testobject.done)

ответ

0

Я это исправил, удалив paramters приемника.

testobject = {} 
 
testobject = new Proxy(testobject, { 
 
get(target, property) { 
 
    console.log("getting", target, property) 
 
    return(Reflect.get(target, property)) 
 
}, 
 
set(target, property, value) { 
 
    console.log("setting", target, property, value) 
 
    return(Reflect.set(target, property, value)) 
 
} 
 
}) 
 
testobject.done = true 
 
console.log(testobject.done)