我写了一个简单的JS脚本来创建一个只允许一个实例初始化的对象。如果该对象已经inizialized它返回不再重新创建它。如何在两个页面之间共享对象?
这是我的:myobj.js
var Singleton = {
initialized : null,
init: function(){
console.log("new obj...");
this.initialized = {
'status' : 'initialized'
}
},
getInstance : function(){
if (!this.initialized) this.init();
return this.initialized;
}
}
然后,我有创建的test.html页面来测试这个脚本:
<script src="myobj.js"></script>
<script>
var uno = Singleton.getInstance();
var due = Singleton.getInstance();
(uno===due) ? console.log("equals") : console.log("not equals");
</script>
所有的作品好,只创建一个对象。
我的问题是:我可以在更多的HTML页面之间共享这个对象“Singleton”吗?
没有重新创建它在不同的页面?
如果我有(例如)在浏览器上打开100个选项卡,我想使用同一个对象而不具有相同的100个对象。
谢谢!
我不这么认为,因为浏览器中的每个页面都有自己的“沙盒”,并且无法访问客户端的任何信息以显示其自己的信息。 唯一的可能性是通过序列化您的singelton并将其放入cookie中并在每个页面上加载反序列化它或:在服务器端管理您的单例并通过ajax或某事与服务器通信。其他。 – thomas
@ thomas,我必须把一些函数,当服务器有一些数据(彗星通信)时会被调用...所以这个对象将有功能和连接。我不想从每一个页面连接到服务器......是否有可能将序列化的对象存储在服务器上,然后用ajax调用它,然后反序列化? – dail
序列化/反序列化意味着与显式创建单独副本完全相同 - 当您反序列化一个对象的序列化形式时,您将获得对象的**副本**。因此,这不会导致您在多个页面之间共享一个对象。 – Pointy