下面代码涉及到了对象的初始化,序列化和反序列化 在javascript 中JSON 用作对象的 序列化和反序列化非常重要
直接上代码
es6 以上的写法
var ss={"name":"存储","age":12,"mem":["2213",11,{"pp":"123"}]}
var s1= JSON.stringify(ss)
//console.log(s1)
var sobj= JSON.parse(s1);
//console.log(sobj)
//es6
//写法1
class temp{
constructor(obj){
this.name=obj.name
this.age=obj.age
this.li=obj.mem
}
fun1(){
return 1+2
}
fun2(){
return 1+2
}
}
var t=new temp(sobj)
console.log(0,JSON.stringify(t),'\n',t)
es5 es6 兼容写法
//写法2
var temp2 ={
newCreate(obj){
let self={name:obj.name,age:obj.age,li:obj.mem}
self. fun1=function(){
return 1+2
}
self. fun2=function(){
return 1+2
}
return self
}
}
var t1= temp2.newCreate(sobj)
console.log(1,JSON.stringify(t1))
console.log(2,t1)
输出
0 {"name":"存储","age":12,"li":["2213",11,{"pp":"123"}]}
temp { name: '存储', age: 12, li: [ '2213', 11, { pp: '123' } ] }
1 {"name":"存储","age":12,"li":["2213",11,{"pp":"123"}]}
2 {
name: '存储',
age: 12,
li: [ '2213', 11, { pp: '123' } ],
fun1: [Function (anonymous)],
fun2: [Function (anonymous)]
}
对比
尽量用2写法 因为写法一有个先天缺陷 就是构造函数不支持 异步async