在使用javascript进行调试和开发时,我经常想提醒对象,所以我使用了以下代码:
for(a in obj)
{
alert(a +' = '+obj[a])
}
它很好用,但太烦人了。我想知道数组是否有这样的东西:
var temp = ['a','b','c'];
alert(temp); // it will alert a,b,c
所以我想做的是:
var temp = {a:'a',b:'b',c:'c'};
alert(temp) ; // It should alert json {a:'a',b:'b',c:'c'}
或任何其他更好的建议,以便我可以轻松查找对象。
答案 0 :(得分:5)
警报调用toString,因此您可以覆盖toString以进行调试:
Object.prototype.toString = function() {
return JSON.stringify(this);
};
所以你可以调用alert(foo);
,它将显示foo的
答案 1 :(得分:3)
使用
alert(JSON.stringify(temp)) ;
而不是
alert(temp) ;
答案 2 :(得分:1)
您也可以这样做,以便提醒格式可以是您想要的
Object.prototype.toString = function{
var str='';
for(a in this)
{
str+=a +' = '+obj[a]);
}
}
答案 3 :(得分:0)
javascript参考指南说javascript对象有一个toString方法,请参阅页面https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/toString
它位于mozilla开发者页面上,但我相信这应该是您需要的。摘录在这里,“ var o = new Object(); o.toString(); “
答案 4 :(得分:0)
一个解决方案是:
dump() - Javascript equivalent of PHP's print_r() function
Perl为这样的工作提供了Data :: Dumper。适合这种情况。非常适合调试。
更好的方法是使用JSON.stringify:
JSON.stringify({a:1,b:2,c:{d:1,e:[1,2]}}, null, 4); // Indented 4 spaces
JSON.stringify({a:1,b:2,c:{d:1,e:[1,2]}}, null, "\t"); // Indented with tab
参考:How Can I Beautify JSON Programmatically
而alert()只会让你更加悲痛,开始使用控制台日志。它们是持久的,允许您更一致地引用输出。
参考:How to Print Debug Messages in the google chrome javascript console
更好的是:使用JavaScript调试器来分析对象。这通常是比简单打印或警告更好的体验。但是如果你必须在许多地方这样做,控制台日志通常会更好。
参考:How do you launch the javascript debugger in Google Chrome?
答案 5 :(得分:0)
或任何其他更好的建议,以便我可以轻松查找对象。
如果您记录它,大多数好的浏览器控制台都会让您深入查看对象。例如,使用Chrome:
console.log(obj);
将树视图对象记录到控制台。
答案 6 :(得分:0)
你可以使用这个功能:
function dump(arr,level) {
var dumped_text = "";
if(!level) level = 0;
var level_padding = "";
for(var j=0;j<level+1;j++)
level_padding += " ";
var type = typeof(arr);
if (arr === null){
dumped_text = "null";
} else if (arr instanceof Array) {
dumped_text += "[";
for(var item in arr) {
var value = arr[item];
dumped_text += dump (value, level+1) + ',';
}
if(dumped_text.length > 1)
dumped_text = dumped_text.substring (0, dumped_text.length-1);
dumped_text += "]";
} else if(type == 'object') {
dumped_text += "{\n";
for(var item in arr) {
var value = arr[item];
dumped_text += level_padding + item + " : ";
dumped_text += dump(value,level+1) + ',\n';
}
if(dumped_text.length > 2)
dumped_text = dumped_text.substring (0, dumped_text.length-2);
dumped_text += "\n" + level_padding.substring (0, level_padding.length-4) + "}";
} else if (type == 'string'){
dumped_text = "'" + arr + "'";
} else if (type == 'number'){
dumped_text = arr + "";
} else if (type == 'boolean'){
dumped_text = arr + "";
}
return dumped_text;
}