echairts的options转成json时,里面有函数怎么办?

echairts的配置项里面的formatter属性可以是一个函数,但是我们把配置项保存成json的时候因为json不能保存函数类型的数据,所以会被过滤掉,我针对formatter是一个函数类型时做了扩展,可以用JSON.stringify保存成字符串时保存函数,用JSON.parse把字符窜转成对象时再把字符窜转成函数。

下面是代码:

 (function(){
        var parse = JSON.parse.bind(JSON);
        var stringify = JSON.stringify.bind(JSON);
        JSON.parse=function (str){
            return parse(str, function (key, val){
                if (key == 'formatter' && typeof(val)=='string' && val.indexOf('function')==0) {
                    var fn = new Function('', 'var f=' + val + ';return f');
                    return fn()
                }
                return val
            })
        }
        JSON.stringify=function (obj){
            return stringify(obj, function (key, val) {
                if (key == 'formatter' && typeof (val) == 'function') {
                    return val.toString()
                }
                return val
            })
        }
    })()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容