重建以JSON序列化的对象

时间:2011-08-26 12:01:58

标签: javascript json serialization

在我的网络应用中,我使用JSON.stringify() as described here序列化对象以进行存储。这很棒,我可以轻松地从JSON字符串重新创建对象,但是我丢失了所有对象'方法。有没有一种简单的方法可以将这些方法添加回我忽略的对象 - 可能涉及原型设计,这是我不太熟悉的事情?

或者只是为了这样做而创建了我自己的精巧功能?

编辑:理想情况下,我正在寻找类似的内容:

Object.inheritMethods(AnotherObject);

2 个答案:

答案 0 :(得分:2)

在调用JSON.parse后获得对象后,您有很多选择。以下是一些例子。

  1. Mixin

    有很多技巧可以做到这一点,this文章很好地描述了这一点。但是,这是一个不需要任何新语言功能的简单示例。请记住,对象本质上只是一个映射,因此JS可以轻松地向对象添加其他属性。

    var stuffToAdd = function() {
        this.name = "Me";        
    
        this.func1 = function() {
            print(this.name);
        }
    
        this.func2 = function() {
            print("Hello again");
        }
    }
    
    var obj = JSON.parse("{}");
    stuffToAdd.call(obj);
    
  2. 原型

    使用Felix提到的Object.create方法。由于这仅在ES5中提供,因此您可能需要使用shim来保证其可用性。

答案 1 :(得分:0)

老问题,但我今天在搜索这个问题时发现了它。 我在其他地方找到了一个解决方案,并且已经找到了解决方案(ES6):

Object.assign(new myclass(),jsonString);