为什么JSON.stringify只显示点击事件的isTrusted成员?
为什么JSON.stringify只显示click事件的isTrusted成员?
有一些原因导致一些属性不会被包含在JSON.stringify中:
1. 它们可能是无法被字符串化的函数。
2. 它们可能属于对象的原型(即类),而不是直接属于对象本身。
如果你需要包含额外的数据,最好的办法是手动构造一个新对象,并包含你想要包含的内容:
window.foo = function(event) { console.log(JSON.stringify({keyCode: event.keyCode})); }
我认为这段代码中有错误:在keyCode前有一个打开的{花括号,但我没有看到一个闭合的花括号。
`JSON.stringify`只显示click事件的isTrusted成员的原因是因为click事件本身包含了很多原型函数,而这些原型函数会被`stringify`隐藏起来。
解决方法是通过在控制台中解包事件的值来查看完整的事件信息。大多数浏览器(IE7及以上版本)都支持在控制台中解包事件的值。你可以在这里查看一个例子:[http://jsfiddle.net/djf2nxwd/14/](http://jsfiddle.net/djf2nxwd/14/)
以下是一个示例代码,展示了如何在控制台中打印完整的事件信息:
document.getElementById('foo').onclick = (event) => { console.log(JSON.stringify(event)); console.log(event); };
这样做可以得到你期望的行为。