应用场景中,有将前端的一些数据保存到后台,在下一次使用的时候取出恢复的操作。对象的字段在这个过程中,是不会产生问题的,但是通过json序列化/反序列化后,对象的方法却不能恢复。
解决这问题最原始的方法,就是重新new个对象,然后把字段依次赋值,但这种耗时耗力无法自适应变更的方法未免也太low了点。
思来想去,记起了很久前看到的关于prototype的文章,便思考了如何能通过prototype完成这一操作。
假设有对象A
class A{
constructor(i, j){
this.i = i
this.j = j
}
sum() {
return this.i + this.j
}
}
let a = new A(1, 2)
console.log(a.sum())
输出3是毫无疑问的,接下来,对a进行json的序列化
let aJsonStr = JSON.stringify(a)
console.log(aJsonStr, typeof(aJsonStr))
输出 {"i":1,"j":2} string
然后便是对a进行json的反序列化
let a2 = JSON.parse(aJsonStr)
console.log(a2, typeof(a2))
输出 {i: 1, j: 2} "object"
重点来了