【发布时间】:2018-01-19 11:01:46
【问题描述】:
我试图在localStorage 中保存一个数组,但它在数组的一个对象中包含函数(称为 promise),但是当我使用JSON.stringify 将数组转换为字符串时出现问题,显然所有函数都已删除并且当我将字符串解析为JSON Object 时,它没有方法。
/* Example code */
var storage = {
getListUsers: function(){
return {
name: 'name',
age: 'age'
}
},
active: true,
data: []
}
var convert = JSON.stringify(storage);
localStorage.setItem('data', convert);
最好的问候。
【问题讨论】:
-
使用
JSON.stringify、replacer函数的可选第二个参数 - 以及JSON.parse、reviver函数的可选第二个参数 - 虽然这将是一个挑战 -
“它包含函数(称为 promise)” - 您是在谈论
storage.data数组中的 promise 吗? (即问题中没有实际显示的承诺?) -
我会将逻辑与数据分开,而不是将函数存储在本地存储中。当您的代码块分散在人们的浏览器中时,很难升级您的代码版本。为什么不在对象从 localStorage 重新水化后添加函数(通过扩展或其他方法)?
-
如果正如 nnnnnn 指出的那样,某些数据是 Promise,那么,a) Promise 不是函数,并且 b) 修复可能知道如何处理异步代码 -保存“Promise”永远不会奏效,因为您无法将有效的 Promise 保存为字符串
标签: javascript json html