我浏览了 Proxies 上的文档,有一长串可以被覆盖的函数属性。不幸的是,它们都没有明确提及到console.log() 的链接,我无法推断console.log() 可能与哪些链接进行交互。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy
我还看到了这个 Stack Overflow 问题(Javascript Proxy and spread syntax, combine with console.log),它似乎显示了与我正在寻找的内容相似的内容,但更多的是针对获取有关属性的信息而不是它的显示方式在控制台中。
问题是,每当我 console.log 我的代理时,我都会得到如下输出:
代理 { <target>: {…}, <handler>: {…} }
此外,我的目标(就我而言)完全是空的。
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() 将输出任意的、特定于用例的数据?