我们需要看看Javascript中对象有什么方法/字段。
当前回答
基于之前在这篇文章中发现的函数。 增加递归模式和缩进。
function dump(v, s) {
s = s || 1;
var t = '';
switch (typeof v) {
case "object":
t += "\n";
for (var i in v) {
t += Array(s).join(" ")+i+": ";
t += dump(v[i], s+3);
}
break;
default: //number, string, boolean, null, undefined
t += v+" ("+typeof v+")\n";
break;
}
return t;
}
例子
var a = {
b: 1,
c: {
d:1,
e:2,
d:3,
c: {
d:1,
e:2,
d:3
}
}
};
var d = dump(a);
console.log(d);
document.getElementById("#dump").innerHTML = "<pre>" + d + "</pre>";
结果
b: 1 (number)
c:
d: 3 (number)
e: 2 (number)
c:
d: 3 (number)
e: 2 (number)
其他回答
可以使用console.debug(object)来实现这一点再简单不过了。如果你以此为生,这个技巧将为你每年节省数百个小时
如果使用Firebug,可以使用console.log输出一个对象,并在控制台中获得一个超链接的可浏览项。
这是我的解决方案。它很好地复制了var_dump的行为,并允许嵌套对象/数组。注意,它不支持多个参数。
function var_dump(variable) { let out = ""; let type = typeof variable; if(type == "object") { var realType; var length; if(variable instanceof Array) { realType = "array"; length = variable.length; } else { realType = "object"; length = Object.keys(variable).length; } out = `${realType}(${length}) {`; for (const [key, value] of Object.entries(variable)) { out += `\n [${key}]=>\n ${var_dump(value).replace(/\n/g, "\n ")}\n`; } out += "}"; } else if(type == "string") { out = `${type}(${type.length}) "${variable}"`; } else { out = `${type}(${variable.toString()})`; } return out; } console.log(var_dump(1.5)); console.log(var_dump("Hello!")); console.log(var_dump([])); console.log(var_dump([1,2,3,[1,2]])); console.log(var_dump({"a":"b"}));
下面是我最喜欢的var_dump/print_r等效Javascript php var_dump。
function dump(arr,level) {
var dumped_text = "";
if(!level) level = 0;
//The padding given at the beginning of the line.
var level_padding = "";
for(var j=0;j<level+1;j++) level_padding += " ";
if(typeof(arr) == 'object') { //Array/Hashes/Objects
for(var item in arr) {
var value = arr[item];
if(typeof(value) == 'object') { //If it is an array,
dumped_text += level_padding + "'" + item + "' ...\n";
dumped_text += dump(value,level+1);
} else {
dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
}
}
} else { //Stings/Chars/Numbers etc.
dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
}
return dumped_text;
}
console.log(OBJECT|ARRAY|STRING|...);
console.info(OBJECT|ARRAY|STRING|...);
console.debug(OBJECT|ARRAY|STRING|...);
console.warn(OBJECT|ARRAY|STRING|...);
console.assert(Condition, 'Message if false');
这些应该在谷歌Chrome和Mozilla Firefox上正常工作(如果你使用的是旧版本的Firefox,那么你必须安装Firebug插件) 在ie8或更高版本上,您必须执行以下操作:
启动“开发人员工具”,点击F12按钮 在标签列表中,点击“脚本”标签 点击右边的“控制台”按钮
欲了解更多信息,请访问此URL: https://developer.chrome.com/devtools/docs/console-api
推荐文章
- Babel 6改变了它导出默认值的方式
- 如何配置历史记录?
- ES6模板文字可以在运行时被替换(或重用)吗?
- [Vue警告]:找不到元素
- 可以在setInterval()内部调用clearInterval()吗?
- AngularJS控制器的生命周期是什么?
- 无法读取未定义的属性“msie”- jQuery工具
- 我的蛋蛋怎么不见了?
- JavaScript中的排列?
- JavaScript中有睡眠/暂停/等待功能吗?
- 如何禁用文本选择使用jQuery?
- 原则-如何打印出真正的sql,而不仅仅是准备好的语句?
- 如何从关联PHP数组中获得第一项?
- 如何停止事件冒泡复选框点击
- PHP/MySQL插入一行然后获取id