Что произойдет, если я попытаюсь вывести объект (с помощью console.log), у которого __proto__ prop является прокси-объектом? - PullRequest
1 голос
/ 20 марта 2020
const obj = {};

const proxy = new Proxy(obj, {
    get(target, propName, receiver) {
        console.log('propName', propName)
        return 1;
    },
});

const name = proxy.name;
const instance  = Object.create(proxy);
console.log('-----------');
console.log(instance);
console.log('-----------');
instance.a = 1;

Я ожидаю, что на выходе будет

propName name
------------------
{}
------------------

, но на самом деле, есть разные результаты в разных узлах env

v10.13.0

propName name
-----------
propName Symbol(nodejs.util.inspect.custom) // why?
propName Symbol(Symbol.toStringTag) // why ?
propName Symbol(Symbol.iterator) // why?
{}
-----------

chrome консоль браузера

propName name
-----------
{}
propName Symbol(Symbol.toStringTag) // why?
propName splice // why?
propName splice // why?
-----------

Я думаю, что это было вызвано console.log

что произошло console.log в обоих env?

И почему {} сзади env-v10.13.0 env, {} впереди в консоли chrome

это мой babelr c, прокси-сервер является родным код

{
    "presets": [
        "@babel/preset-env"
    ],
    "plugins": [
        [
            "@babel/plugin-proposal-decorators",
            {
                "decoratorBeforeExport": true,
                "legacy": true
            }
        ],
        "@babel/plugin-proposal-class-properties"   
    ]
}

код и v10.13.0 выход

chrome выход

Спасибо!

...