Javascript 如何在开发人员工具中显示自定义代理字段
我正在编写一个代理,它有几个内部存储的调试字段。我通过特定的字段名公开它们,例如,在我的处理程序中类似这样的内容:Javascript 如何在开发人员工具中显示自定义代理字段,javascript,Javascript,我正在编写一个代理,它有几个内部存储的调试字段。我通过特定的字段名公开它们,例如,在我的处理程序中类似这样的内容: get(target, property, receiver) { if (property == "__debug1") return debug1 ... 但是当我在Chrome developer tools中查看(检查)对象时,这些伪属性不会出现,即使我执行类似于obj的操作 我尝试实现所有其他似乎与枚举相关的处理程序函数:ownK
get(target, property, receiver) {
if (property == "__debug1") return debug1
...
但是当我在Chrome developer tools中查看(检查)对象时,这些伪属性不会出现,即使我执行类似于obj的操作
我尝试实现所有其他似乎与枚举相关的处理程序函数:ownKeys
、getOwnPropertyDescriptor
和has
,如果我直接调用相应的函数,这些函数就会起作用。但是,当我检查对象时,它们从未被调用(甚至使用console.log将其放入控制台,这允许我直接检查值)
如何让伪属性在调试期间显示以供检查?您将它们“存储”在哪里?在封闭范围内?然后检查处理程序函数的范围。如果将它们存储在代理对象的目标上
,则它们应该在代理检查中直接可见。但是,记录代理不会导致计算其属性,只有显式访问属性,陷阱才会触发。请发布您的全部代码。@Bergi我将它们作为闭包存储在构造代理的函数中。代理的目标是什么?@Bergi是普通对象。无论如何,因为这似乎不可能做到,作为一种解决方法,我创建了一个递归到对象中的函数,并创建了一个包含隐藏字段的常规镜像副本。