javascript实现php的print_r函数

来源:互联网 发布:ubuntu默认字体是什么 编辑:程序博客网 时间:2024/06/02 03:52

/** * 打印关于变量的易于理解的信息。 并将结果输出到页面的底部 * 对于window,document的html Object只能输出一维,function类型数据可以输出一维的属性,全部输出会死机 * @param {type} vars 变量 * @param {type} is_return  * @returns {String} */function print_r(vars) {    var var_type = getType(vars);    var str = '';    var table = document.createElement('table');    table.width = "100%";    table.setAttribute('cellpadding', '0');    table.setAttribute('cellspacing', '0');    table.setAttribute('border', '0');    document.body.appendChild(table);    table.innerHTML = '<tbody><tr><td id="print_r_now_show"></td></tr><tr><td id="print_r_all_show"></td></tr></tbody>';    if (var_type == 'function' || (typeof vars == "object" && vars !== null) || (var_type == 'array' && parseInt(vars.length) > 0)) {//判读是否为数组        var br = '<br/>';//换行符号        var weidu = 0;        var arr = [];        (function(vars, key) {            var type = getType(vars);            var inp = str_repeat('    ', weidu);            var inp2 = str_repeat('    ', weidu + 1);            key = key ? br + inp + '[' + key + ']=>' : '';            str += inp + key + type + '(' + br;            for (var k in vars) {                document.getElementById('print_r_now_show').innerHTML = vars[k];                var ktype = getType(vars[k]);                if (((ktype == "object" && vars[k] !== null) || (ktype == 'array' && parseInt(vars[k].length) > 0)) && weidu < 1) {                    str += arr.join(',' + br);                    arr = [];                    weidu++;                    arguments.callee(vars[k], k);                } else {                    arr.push(inp2 + '[' + k + ']=>' + String(vars[k]));                }            }            str += arr.join(',' + br);            arr = [];            str += br + inp + ')' + br;            weidu--;        })(vars);        var re = new RegExp(br + '( )*' + br, 'g');//去除多余换行符        str = str.replace(re, br);    } else {        str = var_type + '(' + String(vars) + ')';    }    document.getElementById('print_r_all_show').innerHTML = str;}/** * 重复一个字符串 * @param {type} str 要重复的字符串 * @param {type} n 重复次数 * @returns {String} */function str_repeat(str, n) {    var ren = '';    for (var i = 0; i < n; i++) {        ren += str;    }    return ren;}/** * 获取变量的数据类型 * @param {type} vars * @returns {unresolved} */function getType(vars) {    var type = typeof vars;    if (type == 'object') {        var type2 = Object.prototype.toString.call(vars);        if (type2 == '[object Array]') {            type = 'array';        } else if (type2 == '[object Object]') {            type = 'object';        } else {            type = type2.replace(/[\[\]]/gi, '');        }    }    return type;}




原创粉丝点击