在Chrome开发者控制台中:
event = new MessageEvent({data: 'some data'})
MessageEvent {isTrusted: false, data: null, origin: "", lastEventId: "", source: null, …}
当我尝试点差运算符时:
{...event}
{isTrusted: false}
...我只看到isTrusted
属性。
答案 0 :(得分:1)
spread运算符仅复制对象自身的可枚举属性,而不复制原型链上较高的属性。如果您查看event
自己的属性,就会发现它仅具有isTrusted
属性。
> Object.getOwnPropertyNames(event)
> ["isTrusted"]
如果您向上看原型链,就会看到其他一些属性在哪里:
> Object.getOwnPropertyNames(event.__proto__)
> (7) ["data", "origin", "lastEventId", "source", "ports", "initMessageEvent", "constructor"]