首页 > 一个js对象是否可以序列化?

一个js对象是否可以序列化?

其实原问题是:

一个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,存在内存里毕竟不安全,万一当机了。。。


理论值是2^32 - 1, 但是根据各个浏览器对 js 的内存约束的不同这个值也会不同。

【热门文章】
【热门文章】