使用
localstorage
存储对象的时候,需要使用JSON.stringify(obj)
先转换为字符串,然后再用JSON.parse()
转换成对象。
let obj = {
name: '11',
fun: function() {
console.log('sss')
}
}
let temp1 = JSON.stringify(obj)
console.log(temp1)
输出结果:(fun消失了)
但
JOSN.stringify()
有第二个参数转换之前可以对值进行操作
let obj = {
name: '11',
fun: function() {
console.log('sss')
}
}
let temp1 = JSON.stringify(obj,function(key,val) {
if(typeof val == 'function') {
return val.toString()
} else {
return val
}
})
console.log(temp1)
输出结果:(发现fun出现了)
function
存储后对应JSON.parse()
也需要利用第二个参数判断是否是函数字符串进行解析
完整代码
let obj = {
name: '11',
fun: function() {
console.log('sss')
}
}
let temp1 = JSON.stringify(obj,function(key,val) {
if(typeof val == 'function') {
return val.toString()
} else {
return val
}
})
console.log(temp1)
let temp2 = JSON.parse(temp1,function(key, val) {
if(key == 'fun') {
//return eval('(' + val + ')')
return Function('"use strict";return (' + val + ')')()
} else {
return val
}
})
console.log(temp2)