如何覆盖代理在控制台中的显示方式?

时间:2019-07-15 18:21:41

标签: javascript proxy

我浏览了有关Proxies的文档,并且有一长串可以被覆盖的函数属性。不幸的是,他们都没有明确提到console.log()的链接,而且我无法推断console.log()可能与之交互。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy

我也看到了这个堆栈溢出问题(Javascript Proxy and spread syntax, combined with console.log),它似乎显示出与我正在寻找的东西类似的东西,但更着眼于获取有关属性的信息,而不是其在控制台中的显示方式。

问题是,每当我用console.log代理时,都会得到如下输出:

  

代理{<目标>:{…},<处理程序>:{…}}

此外,(在我的情况下)我的目标完全是空的。

const foo = { foo: "foo string" };
const bar = { bar: "bar string" };

let currentObj = foo;

const proxy = new Proxy({}, {
  get: (_, prop) => currentObj[prop],
});

console.log(proxy.foo);
console.log(proxy); // would like this to be { foo: "foo" }

currentObj = bar;
console.log(proxy.bar);
console.log(proxy); // would like this to be { bar: "bar" }

因此,为了使此代码可以调试,我需要某种方式告诉console.log输出什么对象。

是否可以覆盖代理处理程序的某些方面,以便console.log()将输出特定于用例的任意数据?

0 个答案:

没有答案