Javascript 字符串化事件对象可以工作,但实际上是空的

Javascript 字符串化事件对象可以工作,但实际上是空的,javascript,json,dom,Javascript,Json,Dom,我有一个自定义的stringify函数,可以处理循环引用: const customStringify = function (v) { return JSON.stringify(v, function(k, v) { if (v instanceof Node) { return 'Node'; } if (v instanceof Window) { return 'Window'; } return v; }); }

我有一个自定义的stringify函数,可以处理循环引用:

const customStringify = function (v) {
  return JSON.stringify(v, function(k, v) {
    if (v instanceof Node) {
      return 'Node';
    }
    if (v instanceof Window) {
      return 'Window';
    }
    return v;
  });
};
但如果我使用它来字符串化事件对象:

  window.addEventListener('click', function (ev) {   // MouseEvent
    const v = customStringify(ev);  // {"isTrusted":true}
  });
v是如下所示的字符串:

{"isTrusted":true}
真奇怪。我尝试了其他一些自定义字符串化辅助函数,它们都给出了相同的结果

我看了这条线:

但我的问题似乎更具体。

忽略了不可枚举的属性,并且a的大多数属性(显然)是不可枚举的:

document.querySelector('button')。addEventListener('click',ev=>{
让道具=['isTrusted','target','clientX','clientY','layerX','layerY'];
props.forEach(prop=>{
console.log(prop+'?',ev.propertyEnumerable(prop));
});
});

试试看
我还查看了MouseEvent在原型链的某个地方是否有
toJSON
方法,但我没有看到,您希望通过这样做实现什么?或者你只是好奇?我的目标是在前端的线程之间传递事件数据(消息传递)