在我的网络应用中,我使用JSON.stringify() as described here序列化对象以进行存储。这很棒,我可以轻松地从JSON字符串重新创建对象,但是我丢失了所有对象'方法。有没有一种简单的方法可以将这些方法添加回我忽略的对象 - 可能涉及原型设计,这是我不太熟悉的事情?
或者只是为了这样做而创建了我自己的精巧功能?
编辑:理想情况下,我正在寻找类似的内容:
Object.inheritMethods(AnotherObject);
答案 0 :(得分:2)
在调用JSON.parse后获得对象后,您有很多选择。以下是一些例子。
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);
原型
使用Felix提到的Object.create方法。由于这仅在ES5中提供,因此您可能需要使用shim来保证其可用性。
答案 1 :(得分:0)
老问题,但我今天在搜索这个问题时发现了它。 我在其他地方找到了一个解决方案,并且已经找到了解决方案(ES6):
Object.assign(new myclass(),jsonString);