javascript - 为什么通过扩展运算符解构 MessageEvent 不返回所有属性?

标签 javascript

在 Chrome 开发控制台中:

event = new MessageEvent({data: 'some data'})
MessageEvent {isTrusted: false, data: null, origin: "", lastEventId: "", source: null, …}

当我尝试展开运算符时:

{...event}
{isTrusted: false}

...我只看到 isTrusted 属性。

最佳答案

扩展运算符仅复制对象自己的可枚举属性,而不是在原型(prototype)链上找到的属性。如果您查看event自己的属性,您会发现它只有isTrusted属性。

> Object.getOwnPropertyNames(event)
> ["isTrusted"]

如果您在原型(prototype)链上向上查看一步,您会看到其他一些属性的位置:

> Object.getOwnPropertyNames(event.__proto__)
> (7) ["data", "origin", "lastEventId", "source", "ports", "initMessageEvent", "constructor"]

关于javascript - 为什么通过扩展运算符解构 MessageEvent 不返回所有属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52787593/

相关文章:

javascript - 将一个数字范围映射到另一个数字范围

javascript - 插入 HABTM sequelize js

javascript - 如何在提交表单时在控制台上打印选择选项?

javascript - 如何解决错误 - 尝试在 react native 视频中加载空源

javascript - 如何在混合应用程序中创建图形

javascript - JSON 负载问题,javascript 编码

javascript - Firebase 帮助 : Avoid New ID on new Push

javascript - Cocoa:WKWebView/WebView 无法打开 Gmail 或 Inbox 内的链接

javascript - 使用 CSS 创建像无限滚动一样的 slider

javascript - 在 DomPurify 中允许 HTML 注释