如果对象有toJSON方法,JSON.stringify 就会调用对象的toJSON方法,以toJSON方法返回的值为序列化值 。
什么意思呢?
比如有这么一个user对象:
const user = {
name:'张三',
age:23,
flag:true
}
JSON.stringify()就可将此对象转为json对象,如果user里面有一个toJSON方法,那么会按照toJSON方法返回的结果决定。
这意味着,如果要对一堆数据处理的时候,去除掉一些没用的东西,比如flag。那么可以通过两者配合完成。如:
const user = {
name:'张三',
age:23,
flag:true,
toJSON:function(){
delete this.flag
return this
}
}
console.log('user.toJson() :>> ', JSON.stringify(user));//{"name":"张三","age":23}
JSON.stringify()也可进行深拷贝,在此不多说了。里面可以放三个参数,一般来说只会用到第一个。