3

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'}

または、他のより良い提案があれば、オブジェクトを簡単に検索できます。

4

7 に答える 7

4

Alert は toString を呼び出すので、デバッグ目的で toString を上書きできます。

Object.prototype.toString = function() {
    return JSON.stringify(this);
};

したがって、呼び出すだけalert(foo);で、foo の JSON 表現が表示されます。

于 2012-07-24T13:49:18.833 に答える
3

使用する

alert(JSON.stringify(temp)) ;

それ以外の

alert(temp) ;  
于 2012-07-24T13:42:12.067 に答える
1

これを実行して、アラート形式を希望どおりにすることもできます

 Object.prototype.toString = function{
    var str='';
    for(a in this)
    {
      str+=a +' = '+obj[a]);
    }    
    }
于 2012-07-26T17:08:48.833 に答える
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;
}
于 2012-08-21T16:24:33.213 に答える
0

1つの解決策は次のとおりです。

dump() - PHP の print_r() 関数に相当する Javascript

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

参照:プログラムで JSON を美化するにはどうすればよいですか

そして、alert() はあなたをもっと悲しませるだけです。コンソールログを使い始めてください。それらは永続的であり、出力をより一貫して参照できます。

参照: google chrome javascript コンソールでデバッグ メッセージを出力する方法

いっそのこと: JavaScript デバッガーを使用してオブジェクトを分析します。これは通常、単純に出力したり警告したりするよりも優れたエクスペリエンスです。ただし、多くの場所でこれを行う必要がある場合は、通常、コンソール ログの方が適しています。

参照: Google Chrome で JavaScript デバッガーを起動するにはどうすればよいですか?

于 2012-07-24T13:43:09.620 に答える
0

JavaScript リファレンス ガイドには、javascript オブジェクト用の toString メソッドがあると記載されています。ページhttps://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/toStringを参照してください。

これは mozilla 開発者ページにありますが、それが必要なものであると私は信じています。抜粋はこちら、「 var o = new Object(); o.toString(); 」

于 2012-07-24T13:41:56.717 に答える
0

または、他のより良い提案があれば、オブジェクトを簡単に検索できます。

ほとんどの優れたブラウザのコンソールでは、オブジェクトをログに記録するとドリルダウンできます。たとえば、Chrome の場合:

console.log(obj);

ツリー ビュー オブジェクトをコンソールに記録します。

于 2012-07-24T13:44:27.607 に答える