我需要将 MouseEvent 序列化为 JSON,但是:
canvas.addEventListener('mousedown', function (e) {
console.log(JSON.stringify(e))
});
仅打印事件的第一个元素:
{"isTrusted": true}
我希望它将整个 MouseEvent 转换为 JSON,包括
offsetX
、offsetY
等内容。
我已经尝试过使用 dojox.json.ref、JSON-js、this、this 和其他一些方法来限制 JSON 字符串化深度和删除循环结构。我认为圆形结构可能不是问题所在。 我目前使用这种方法
来解决这个问题,但一定有更好的方法。感觉就像是necrobumping,但对于那些寻求解决方案的人,我分享:function objectizeEvent<T extends Event>(event: T) {
const keys = Object.keys(MouseEvent.prototype) as (keyof T)[];
const entries = keys.map((k) => [k, event[k]]);
return Object.fromEntries(entries);
}
这将返回一个具有
MouseEvent
大部分属性的对象。
请注意,不可序列化的值(例如函数)将是 undefined
。