3

Eclipse IDEの新規ユーザーconsole.log()は、文字列をlogcatパネルに出力すると思いました。これはすばらしいことです。しかし、console.log()(文字列リテラルではなく)オブジェクトを試してみると、コンソールに表示されるのは[オブジェクトオブジェクト]だけです。

現在、これを回避するために使用console.log(JSON.stringify(MyObject))しています。単純なオブジェクトでは機能しますが、オブジェクトが複雑すぎると、ある時点で文字列が切り捨てられ、デバッグが非常に困難になります。

Chromeデベロッパーツールで得られるような素敵なツリービューでコンソールパネルのオブジェクトを検査するためのきちんとした方法はありますか(拡張可能なツリービューは常にjson文字列を処理する方が簡単です)?

また、Android用のPhoneGap開発を行っていることにも言及する価値があります。つまり、基本的にはHTMLとJavascriptのみを扱っています。System.out.printlnは私には機能しません。

*また、私はPhoneGapのWeinreも知っています。しかし、Webデバッグは私の好みには遅すぎるので、私はローカルIDE内の解決策を探しているだけです。

ありがとう

4

1 に答える 1

3

独自のコンソール「ツリー」ロガーを作成して、ソースに含めることができます。簡単な例は次のとおりです。

function logObject(obj)
{
    var ind = "";
    if (arguments.length > 1)
    {
        ind = arguments[1];
    }

    if (typeof obj == "undefined" || obj == null)
    {
        console.log("<null>");
        return;
    }

    if (typeof obj != "object")
    {
        console.log(obj);
        return;
    }

    for (var key in obj)
    {
        if (typeof obj[key] == "object")
        {
            console.log(ind + key + "={");
            logObject(obj[key], ind + "  ");
            console.log(ind + "}");
        }
        else
        {
            console.log(ind + key + "=" + obj[key]);
        }
    }
}

使用例:

var a = [1, 2, 3];
var o = {a:1, b:2, c:3, d: a};
var obj = {a:1, b:o, c:3, d: a};

logObject(obj);

結果は、コンソールまたはLogCatで次のようになります。

a=1
b={
  a=1
  b=2
  c=3
  d={
    0=1
    1=2
    2=3
  }
}
c=3
d={
  0=1
  1=2
  2=3
}

乾杯

于 2013-04-08T21:21:01.050 に答える