生成的新对象和之前的对象并不是同一个对象:
相当于是进行了一次深拷贝;
const obj = {
name: 'why',
age: 18,
friend: {
name: 'kobe'
}
}
const objString = JSON.stringify(obj)
const info = JSON.parse(objString)
console.log(info);
//{ name: 'why', age: 18, friend: { name: 'kobe' } }
console.log(info === obj)//false
info.friend.name = "james"
console.log(obj.friend.name)//kobe
注意:这种方法它对函数是无能为力的
创建出来的info中是没有foo函数的,这是因为stringify并不会对函数进行处理;
举例:
const obj = {
name: 'why',
age: 18,
friend: {
name: 'kobe'
},
eating() {
console.log("eating~")
}
}
const objString = JSON.stringify(obj)
const info = JSON.parse(objString)
console.log(info);
//{ name: 'why', age: 18, friend: { name: 'kobe' } }
console.log(info === obj)//false
info.friend.name = "james"
console.log(obj.friend.name)//kobe
这里在obj对象中添加了方法,但是转换后的info对象中没有函数