var obj = {
conn : null,
first : function(thisIdentity) {
"use strict";
var myObj = this;
$(document).on('click', thisIdentity, function(e) {
e.preventDefault();
$.ajax ({
url : some value,
// other parameters
success : function(data) {
myObj.conn = new Connection(data.user_id, "127.0.0.1:80");
sessionStorage.setItem('connection', JSON.stringify(myObj.conn));
}
});
},
second : function(thisIdentity) {
"use strict";
var myObj = this;
var conntn = sessionStorage.getItem('connection');
$(document).on('click', thisIdentity, function(e) {
e.preventDefault();
$.ajax ({
url : some value,
// other parameters
success : function(data) {
var parsedConnection = JSON.parse(conntn);
parsedConnection.sendMsg(data.id, data.nid);
}
});
}
};
var Connection = (function() {
function Connection(uid, url) {
this.uid = uid;
this.open = false;
this.socket = new WebSocket("ws://"+url);
this.setupConnectionEvents();
},
Connection.prototype = {
sendMsg : function(id, nid) {
alert("Working");
},
// other functions
}
})();
因此,在第一个的 AJAX 回调函数中建立了连接,我将对象存储在sessionStorage
via中,JSON
但是当我在第二个的 AJAX 回调中使用它时,就会出现错误
TypeError: parsedConnection.sendMsg 不是函数
现在我明白这可能是因为 JSON 可用于存储普通对象而不是基于原型的对象。
我的问题是:谁能告诉我如何通过 JSON 或任何其他方式来存储基于原型的对象来实现这一点?
我不想使用eval
. 任何代码,参考将不胜感激。谢谢!
更新
我按照@Dan Prince 提到的那样做了,但后来出现了一个新问题,现在sendMsg
我在使用函数时
this.socket.send(JSON.stringify({
action: 'message',
rec: receiver,
msg: message
}));
然后它停留
InvalidStateError:尝试使用不可用或不再可用的对象
有什么输入吗?谢谢!