1、测试代码,保存为【test.html】
Document
效果如下:
![b96d005be154bb33e9e52f4d5ce647a8.png](https://img-blog.csdnimg.cn/img_convert/b96d005be154bb33e9e52f4d5ce647a8.png)
2、源码(保存为 write.js)
//生成打印对象的字符串,方便 document.write//或者 innerText 和 innerHTML 调用function getWriteHtml() { var args = Array.from(arguments); //将参数转换成数组 var strRet = ""; var isfirst = true; //第一个不需要打印逗号 for(var arg of args) { if (!isfirst) { strRet += (","); } //不是第一个元素全都要打印逗号 if (arg instanceof Array) { //如果是数组 strRet += '['+getWriteHtml(...arg)+']'; //将 [arg] 转换成 (1,2,3) 的形式,再一次write(递归) } else if (arg instanceof Object) { //如果是对象 { k:v, k:v } 这种形式 strRet += "{"; //打印 { var isfirst2 = true; //第一个不需要打印逗号 for(var k in arg) { //循环取 k if (!isfirst2) { strRet += (","); } strRet += k + ":" + getWriteHtml(arg[k]); //打印 k:v => 其中 v 不知道是啥,所以递归调用打印方法 isfirst2 = false; //表示后面的都不需要打印逗号了 } strRet += "}"; //打印 } } else strRet += (arg); //即不是数组,也不是对象,直接打印就是了 isfirst = false; } return strRet;}function getWriteHtmlPretty() { var info = { level: 0, newLine: true, valColor: '#666', //值颜色 bracketColor: '#a00', //括号颜色 objKeyColor: '#0a0' //键值对里的键颜色 }; function _getWriteHtmlPretty() { var args = Array.from(arguments); //将参数转换成数组 var strRet = ""; var info = args[0]; var clevel = info.level; var spaces = ''.padEnd(clevel, ''); //根据级别来计算缩进 var spaces2 = ''.padEnd(clevel + 1, ''); //根据级别来计算缩进 var isfirst = true; //第一个不需要打印逗号 for(var c=1; c[${_getWriteHtmlPretty(...[info, ...arg])}]`; //将 [arg] 转换成 (1,2,3) 的形式,再一次write(递归) } else if (arg instanceof Object) { //如果是对象 { k:v, k:v } 这种形式 info.level++; if (info.newLine) { strRet += "" + spaces; } strRet += `{`; //打印 { var isfirst2 = true; //第一个不需要打印逗号 for(var k in arg) { //循环取 k if (!isfirst2) { strRet += ","; } if (arg[k] instanceof Object) info.newLine = false; strRet += `${spaces2}${k}:` + `${ _getWriteHtmlPretty(...[info, arg[k]])}`; //打印 k:v => 其中 v 不知道是啥,所以递归调用打印方法 info.newLine = true; isfirst2 = false; //表示后面的都不需要打印逗号了 } strRet += `${spaces}}`; //打印 } info.level--; } else strRet += `${arg}`; //即不是数组,也不是对象,直接打印就是了 isfirst = false; } return strRet; } var args = [info, ...Array.from(arguments)]; //将参数转换成数组 return _getWriteHtmlPretty(...args);}function write() { var html = getWriteHtml(...Array.from(arguments)); document.write(html);}//打印完加个
标签,html里的换行function writebr() { var args = Array.from(arguments); write(...args); write("
");}//打印完加个换行符,普通format的换行function writeln() { var args = Array.from(arguments); write(...args); write("");}//格式化打印 writeformat(()=>{ 这里头调打印函数 });function writeformat(func) { write("
"); func(); write("
");}