js2jscode

const js2jscode = (function() {
    function main(target) {
        const targetType = Object.prototype.toString.call(target).match(/\[object\s(.*?)]/)[1];
        let code = '';
        switch (targetType) {
        case 'Object':
            code += '{';
            for (let k in target) {
                code += `${k}: ${main(target[k])},`;
            }
            if (code.length > 1) {
                code = code.slice(0, -1);
            }
            code += '}';
            break;
        case 'Array':
            code += '[';
            for (let i = 0; i < target.length; i++) {
                code += `${main(target[i])},`;
            }
            if (code.length > 1) {
                code = code.slice(0, -1);
            }
            code += ']';
            break;
        case 'Function':
            code = target.toString();
            if (code[0] !== 'f' && code[1] !== 'u') {
                code = 'function ' + code;
            }
            code = code.replace(/\[native\scode\]/, '/* 你的代码 */');
            break;
        case 'String':
            code = `'${target}'`;
            break;
        case 'Number':
        case 'Boolean':
            code = target;
            break;
        }
        return code || JSON.stringify(target);
    }

    return function js2jscode(any) {
        return main(any);
    };
})();
js2jscode({
    fn() {

},
    a: '2',
    bl: true,
    b: 3,
    c: [1, {
        a: '2',
        b: 3,
        c: [1, 2, 3]
    },
    {
        fn() {

},
        a: '2',
        bl: true,
        b: 3,
        c: [1, {
            a: '2',
            b: 3,
            c: [1, 2, 3]
        },
        3],
    },
    ],
});
// 补了换行符  
  const js2jscode = (function () {
        function main(target) {
            const targetType = Object.prototype.toString.call(target).match(/\[object\s(.*?)]/)[1]
            let code = ''
            switch (targetType) {
                case 'Object':
                    code += '{\n'
                    for (let k in target) {
                        code += `${k}: ${main(target[k])},\n`
                    }
                    if (code.length > 1) {
                        code = code.slice(0, -1)
                    }
                    code += '\n}'
                    break
                case 'Array':
                    code += '[\n'
                    for (let i = 0; i < target.length; i++) {
                        code += `${main(target[i])},\n`
                    }
                    if (code.length > 1) {
                        code = code.slice(0, -1)
                    }
                    code += '\n]'
                    break
                case 'Function':
                    code = target.toString()
                    if (code[0] !== 'f' && code[1] !== 'u') {
                        code = 'function ' + code
                    }
                    code = code.replace(/\[native\scode\]/, '/* 你的代码 */')
                    break
                case 'String':
                    code = `'${target}'`
                    break
                case 'Number':
                case 'Boolean':
                    code = target
                    break
            }
            return code || JSON.stringify(target)
        }

        return function js2jscode(any) {
            return main(any)
        }
    })()

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值