利用Function 的特性把字符串对象转换成对象
当用户在输入框种输入对象字符串当成配置信息,然后传递给后台, 后台在数据库种直接用字符串的方式保存,所以就有以下的情况
- 前端上传的数据
const params = {
config: "{url: 'http://www.baidu.com'}"
}
利用以上数据直接上传给后台,数据库也是直接保存字符串,前端请求数据的时候返回的参数就会出现以下现象
{
data: {
config: "{url: 'http://www.baidu.com'}"
}
}
但是我们想用的时候需要用到url的值,第一个想法是想用JSON.parse(data.config)的方式
但是你会发现报错误
仔细一看,他不是JSON字符串
这时候可以利用 new Function这个东西来实现了
const adder = new Function("a", "b", "return a + b");
// 调用函数
adder(2, 6);
这是Function 在MDN种的介绍
那么我们就可以利用这个东西来实现了
const fn = new Function(`return ${data.config}`)
可以看到 fn 是一个函数,平且返回一个对象
然后执行这个函数,就可以看到以下效果,
然后我们就可以很开心的使用 把result当成js对象使用了