104

アラート ボックス内のオブジェクトを調べるにはどうすればよいですか? 通常、オブジェクトをアラートすると、ノード名がスローされます。

alert(document);

しかし、アラート ボックス内のオブジェクトのプロパティとメソッドを取得したいと考えています。可能であれば、どうすればこの機能を実現できますか? それとも他の提案はありますか?

特に、console.log と Firebug が利用できない本番環境のソリューションを探しています。

4

8 に答える 8

196

alert(JSON.stringify(object))最新のブラウザではどうですか?

の場合、TypeError: Converting circular structure to JSONその他のオプションがあります。循環参照がある場合でも、DOMノードをJSONにシリアル化する方法は?

ドキュメント:JSON.stringify()出力のフォーマットまたは見栄えに関する情報を提供します。

于 2011-03-18T21:21:13.773 に答える
58

for-inは、オブジェクトまたは配列の各プロパティをループします。このプロパティを使用して、値を取得したり変更したりできます。

注:「スパイ」を使用しない限り、私有地は検査に利用できません。基本的に、オブジェクトをオーバーライドして、オブジェクトのコンテキスト内でfor-inループを実行するコードを記述します。

のように見えます:

for (var property in object) loop();

いくつかのサンプルコード:

function xinspect(o,i){
    if(typeof i=='undefined')i='';
    if(i.length>50)return '[MAX ITERATIONS]';
    var r=[];
    for(var p in o){
        var t=typeof o[p];
        r.push(i+'"'+p+'" ('+t+') => '+(t=='object' ? 'object:'+xinspect(o[p],i+'  ') : o[p]+''));
    }
    return r.join(i+'\n');
}

// example of use:
alert(xinspect(document));

編集:少し前に、私は自分の検査官を書きました。興味があれば、喜んで共有します。

編集2:まあ、とにかく私は1つを書きました。

于 2011-03-18T20:25:39.983 に答える
39

使用console.dir(object)とFirebugプラグイン

于 2012-07-04T20:15:31.060 に答える
19

いくつかの方法があります:

 1. typeof tells you which one of the 6 javascript types is the object. 
 2. instanceof tells you if the object is an instance of another object.
 3. List properties with for(var k in obj)
 4. Object.getOwnPropertyNames( anObjectToInspect ) 
 5. Object.getPrototypeOf( anObject )
 6. anObject.hasOwnProperty(aProperty) 

コンソール コンテキストでは、.constructor または .prototype が役立つ場合があります。

console.log(anObject.constructor ); 
console.log(anObject.prototype ) ; 
于 2013-11-02T14:11:40.100 に答える
17

コンソールを使用します。

console.log(object);

または、html dom 要素を調べている場合は、console.dir(object) を使用します。例:

let element = document.getElementById('alertBoxContainer');
console.dir(element);

または、使用できる js オブジェクトの配列がある場合:

console.table(objectArr);

多くの console.log(objects) を出力している場合は、次のように書くこともできます

console.log({ objectName1 });
console.log({ objectName2 });

これは、コンソールに書き込まれたオブジェクトにラベルを付けるのに役立ちます。

于 2012-11-22T20:16:20.697 に答える
9
var str = "";
for(var k in obj)
    if (obj.hasOwnProperty(k)) //omit this test if you want to see built-in properties
        str += k + " = " + obj[k] + "\n";
alert(str);
于 2011-03-18T20:24:29.647 に答える
4

これは、より読みやすいオブジェクト インスペクタです。コードをここに書き留めるには時間がかかるため、http://etto-aa-js.googlecode.com/svn/trunk/inspector.js からダウンロードできます。

次のように使用します。

document.write(inspect(object));
于 2014-12-31T00:25:17.550 に答える