我认为您从网络工作者使用“postMessage”发送的对象的序列化是使用 JSON.serialize 进行的,而反序列化是使用 JSON.parse 进行的。但是我用那个工作代码做了一个测试(在 Firefox 中):
function A() {
this.id = 3;
this.save;
}
var a1 = new A();
var a2 = new A();
a1.save = a2;
postMessage({
'a1' : a1,
'a2' : a2
});
现在在主文件中你有:
w.onmessage = function(event) {
event.data.a2.id = 7;
};
问题是之后 a1.save.id 中的值也是 7。所以必须有一个引用,但是当你使用 JSON.serialze 和 JSON.parse 时没有引用......那么序列化是如何进行的?我可以在所有浏览器中假设该引用吗?谢谢!