重写JSON.stringify与JSON.parse使其支持解析function类型

发布时间 2023-07-04 22:39:19作者: Steven_YF
const JSONStringify = (option) => {
    return JSON.stringify(option,
        (key, val) => {
            // 处理函数丢失问题
            if (typeof val === 'function') {
                return `${val}`;
            }
            // 处理undefined丢失问题
            if (typeof val === 'undefined') {
                return 'undefined';
            }
            return val;
        }
    )
}
const JSONParse = (objStr) => {
    return JSON.parse(objStr, (k, v) => {
        if (typeof v === 'string' && v.indexOf && v.indexOf('function') > -1) {
            // eval 可能在eslint中报错,需要加入下行注释
            // eslint-disable-next-line
            return eval(`(function(){return ${v}})()`);
        }
        return v;
    });
}