Ловушка для получения прокси вызывается с помощью `inspect` (String!) - PullRequest
0 голосов
/ 23 июня 2018

В настоящее время я часто использую прокси, но у меня была ловушка, которую я не знаю, как решить, не чувствуя себя хакером.

См. Этот простой код:

var target = {bla: 4}
var handler = {
  get: function (target, name, receiver) {
    console.log(target, name)
  }
}

var p = new Proxy(target, handler)
console.log('Finished', p)

Это выводит:

{ bla: 4 } Symbol(util.inspect.custom)
{ bla: 4 } 'inspect'
{ bla: 4 } 'inspect'
{ bla: 4 } Symbol(Symbol.toStringTag)
{ bla: 4 } Symbol(Symbol.iterator)
Finished: { bla: 4 }

В моем реальном коде у меня нет проблем с сортировкой символов вроде Symbol(util.inspect.custom), потому что я могу просто перевести их на Reflect.get. Однако getTrap также вызывается с 'inspect'. Дважды! И это строка - нет никакой разницы между этим «специальным» вызовом и обычным доступом к свойству target.inspect.

Как мне решить эту двусмысленность? В любом случае, почему ловушка вызывается с несимвольным именем?

...