在项目中针对一些复杂结构的对象、数组等深层次数据进行数据转换<对象转字符串>的过程中<JSON.stringify()>,我们会发现如果在对象或者数组中设置一些function的键sh值对,当转换以后,该方法就会丢失,如下:

var obj = {
    name:'骚饼',
    age:'3',
    fn:function(){
        console.log(this.name + this.age)
    }
}
obj;

上述代码执行以后可以看到如下结果

但是如果当我们使用JSON.parse(JSON.stringify()) 实现深拷贝以后,会发现fn方法丢失

这时候我们可以使用eval进行数据的转换处理,封装了如下方法,大家可以复制到项目进行使用

//更正:形参key修改
function JSONParse(str) {
  return JSON.parse(str, (k, v) => {
    if (typeof v === 'string' && v.indexOf && v.indexOf('h =>') > -1) return eval(`(() =>{return ${v}})()`)
    return v
  })
}

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐