我定义了一个像这样的对象:
function Receipt (stat, pr) {
var status = stat,
price = pr;
this.somefunction = function (someArgs) {
// do something
}
}
然后我有一个websocket并发送这个对象; websocket连接到服务器,然后服务器将消息中继到所有其他客户端。
var rec = new Receipt('NEW', 10);
socket.send({obj: rec});
问题在于:当我在其他客户端上收到数据时,我收到空对象。有没有办法序列化数据并发送它,以便我可以复制其他客户端上的对象 - 以便对象的定义保持不变?我试过JSON.stringify
没有帮助,只是给了我"{}"
答案 0 :(得分:1)
如果您希望对象保留stat
和pr
的初始值,则需要将其存储在this
中。
在您提供的代码中,rec
的唯一属性是somefunction
,它不会被字符串化,因为它是一个函数。
function Receipt (stat, pr) {
this.status = stat;
this.price = pr;
this.somefunction = function (someArgs) {
// do something
}
}
var rec = new Receipt('NEW', 10);
JSON.stringify(rec)
// returns "{"status":"NEW","price":10}"