我浏览了有关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()将输出特定于用例的任意数据?