其实原问题是:
一个js对象最多可以拥有多少个属性 还可以保证 良好的性能?
那么根据讨论,实际的问题就成了现在的问题。
代码如下
var People = function(){
this.a, this.b, this.c;
this.say = function(){console.log(a)}
this.setA = function(a){this.a = a;}
this.otherFunc = function(){
xxxx this.b xxxx
}
this.anotherFunction = function(){xxxxxxxxxxx}
this.xxx = function(){..........}
.............
}
var p = new People();
p.setA(2)
如何序列化p, 能保证p 反序列化取出来后, p内的属性值,还保持和序列化之前的 一样?
Python中pickle可以持久化存储对象 , node中如和做到?
原问题 分割线--------------------------
问题场景是这样的,我需要做一个消息队列,存储包含response的回调函数,现在使用object对象作为 Hash数据结构进行保存消息,如下:
message.js:
var obj = {};
var Message = function(){
this.push = function(uuid, callback){
obj[uuid] = cb;
}
this.pop = function(uuid){
var callback = obj[uuid]
delete obj[uuid]
return callback;
}
}
module.exports = new Message()
index.coffee:
message = require './message'
uuid = require xxxx
http = require xxx
socket_io = require xxxx
......
server = http.createServer((req, resp)->
mid = uuid.v1()
message.push(mid, (data)-> resp.send(data))
socket_io.emit("xxx", {xxxx:xx})
)
io.on("connection", (socket)->
socket.on("xxxx", (mid, data)->
cb = message.pop(mid)
cb(data)
)
)
我想了解一下 obj = {}
是否存在属性个数上限? 在保证程序能够正确运行的情况下,是否存在一个理论值和一个实际值 来确定 这个属性的个数上限? 这个实际值和理论值 是否与内存大小存在关系? 另外是否有更好的实现方式?
如果要持久化存储建议用redis或者mongo,存在内存里毕竟不安全,万一当机了。。。