Javascript 为什么';t通过spread运算符来分解MessageEvent是否返回所有属性?
在Chrome开发控制台中:Javascript 为什么';t通过spread运算符来分解MessageEvent是否返回所有属性?,javascript,Javascript,在Chrome开发控制台中: event = new MessageEvent({data: 'some data'}) MessageEvent {isTrusted: false, data: null, origin: "", lastEventId: "", source: null, …} 当我尝试spread操作符时: {...event} {isTrusted: false} …我只看到是受信任的属性。扩展运算符只复制对象自身的可枚举属性,而不复制原型链上较高位置的属性。如果您
event = new MessageEvent({data: 'some data'})
MessageEvent {isTrusted: false, data: null, origin: "", lastEventId: "", source: null, …}
当我尝试spread操作符时:
{...event}
{isTrusted: false}
…我只看到
是受信任的
属性。扩展运算符只复制对象自身的可枚举属性,而不复制原型链上较高位置的属性。如果您查看事件
自身的属性,您将看到它只有受信任的属性
> Object.getOwnPropertyNames(event)
> ["isTrusted"]
如果您查看原型链上的一个步骤,您将看到其他一些属性的位置:
> Object.getOwnPropertyNames(event.__proto__)
> (7) ["data", "origin", "lastEventId", "source", "ports", "initMessageEvent", "constructor"]
spread操作符仅复制对象自身的可枚举属性,而不复制原型链上较高位置的属性。如果您查看事件
自身的属性,您将看到它只有受信任的属性
> Object.getOwnPropertyNames(event)
> ["isTrusted"]
如果您查看原型链上的一个步骤,您将看到其他一些属性的位置:
> Object.getOwnPropertyNames(event.__proto__)
> (7) ["data", "origin", "lastEventId", "source", "ports", "initMessageEvent", "constructor"]