Как обернуть объект в прокси для отладки? - PullRequest
0 голосов
/ 16 сентября 2018

Я пытаюсь обернуть объект, чтобы определить, кто его меняет. Я пытался сделать это с 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

Что я делаю не так?

1 Ответ

0 голосов
/ 16 сентября 2018

В случае, если свойство 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...