我们需要看看Javascript中对象有什么方法/字段。
当前回答
我用了第一个答案,但我觉得里面少了一个递归。
结果是:
function dump(obj) {
var out = '';
for (var i in obj) {
if(typeof obj[i] === 'object'){
dump(obj[i]);
}else{
out += i + ": " + obj[i] + "\n";
}
}
var pre = document.createElement('pre');
pre.innerHTML = out;
document.body.appendChild(pre);
}
其他回答
如果您使用的是firefox,那么firebug插件控制台是检查对象的绝佳方法
console.debug(myObject);
或者你可以像这样循环遍历属性(包括方法):
for (property in object) {
// do what you want with property, object[property].value
}
可以使用console.debug(object)来实现这一点再简单不过了。如果你以此为生,这个技巧将为你每年节省数百个小时
这是我的解决方案。它很好地复制了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"}));
您希望以JSON形式看到整个对象(对象和变量的所有嵌套层)。JSON代表JavaScript对象表示法,打印出对象的JSON字符串相当于var_dump(以获得JavaScript对象的字符串表示)。幸运的是,JSON很容易在代码中使用,而且JSON数据格式也很适合人类阅读。
例子:
var objectInStringFormat = JSON.stringify(someObject);
alert(objectInStringFormat);
基于之前在这篇文章中发现的函数。 增加递归模式和缩进。
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)
推荐文章
- Babel 6改变了它导出默认值的方式
- 如何配置历史记录?
- ES6模板文字可以在运行时被替换(或重用)吗?
- [Vue警告]:找不到元素
- 可以在setInterval()内部调用clearInterval()吗?
- AngularJS控制器的生命周期是什么?
- 无法读取未定义的属性“msie”- jQuery工具
- 我的蛋蛋怎么不见了?
- JavaScript中的排列?
- JavaScript中有睡眠/暂停/等待功能吗?
- 如何禁用文本选择使用jQuery?
- 原则-如何打印出真正的sql,而不仅仅是准备好的语句?
- 如何从关联PHP数组中获得第一项?
- 如何停止事件冒泡复选框点击
- PHP/MySQL插入一行然后获取id