通过iframe传输对象时,我们可以保留__proto__吗?

时间:2020-03-19 05:19:42

标签: javascript

我正在使用window.postMessage将对象从父窗口传输到iframe。但是,当我们在iframe上收到对象时,该对象会丢失 proto 。有没有办法解决此问题

1 个答案:

答案 0 :(得分:1)

Window.postMessage使用结构化克隆算法通过递归克隆在边界之间传递对象。它具有局限性,如MDN page

中所述

根据documentation,某些对象属性未保留:

  • 不保留RegExp对象的lastIndex属性。
  • 属性描述符,setter,getter和类似类似元数据的功能不是 重复的。例如,如果使用属性描述符将对象标记为只读,则该对象将被重复读取/写入,因为这是默认设置。
  • 原型链没有遍历或重复。

解决方法:

原型链作为对象与数据/有效载荷一起发送,并在接收器端使用Object.createObject.setprototypeof方法来纠正接收对象的原型。