记一个Javascript的小技巧

198 阅读1分钟

利用Function 的特性把字符串对象转换成对象

当用户在输入框种输入对象字符串当成配置信息,然后传递给后台, 后台在数据库种直接用字符串的方式保存,所以就有以下的情况

  1. 前端上传的数据
const params = {
  config: "{url: 'http://www.baidu.com'}"
} 

利用以上数据直接上传给后台,数据库也是直接保存字符串,前端请求数据的时候返回的参数就会出现以下现象

{
  data: {
    config: "{url: 'http://www.baidu.com'}"
  }
}

但是我们想用的时候需要用到url的值,第一个想法是想用JSON.parse(data.config)的方式 但是你会发现报错误

image.png

仔细一看,他不是JSON字符串 这时候可以利用 new Function这个东西来实现了

const adder = new Function("a", "b", "return a + b");

// 调用函数
adder(2, 6);

这是Function 在MDN种的介绍 那么我们就可以利用这个东西来实现了

const fn = new Function(`return ${data.config}`)

image.png

可以看到 fn 是一个函数,平且返回一个对象 然后执行这个函数,就可以看到以下效果,

image.png

然后我们就可以很开心的使用 把result当成js对象使用了