アラート ボックス内のオブジェクトを調べるにはどうすればよいですか? 通常、オブジェクトをアラートすると、ノード名がスローされます。
alert(document);
しかし、アラート ボックス内のオブジェクトのプロパティとメソッドを取得したいと考えています。可能であれば、どうすればこの機能を実現できますか? それとも他の提案はありますか?
特に、console.log と Firebug が利用できない本番環境のソリューションを探しています。
アラート ボックス内のオブジェクトを調べるにはどうすればよいですか? 通常、オブジェクトをアラートすると、ノード名がスローされます。
alert(document);
しかし、アラート ボックス内のオブジェクトのプロパティとメソッドを取得したいと考えています。可能であれば、どうすればこの機能を実現できますか? それとも他の提案はありますか?
特に、console.log と Firebug が利用できない本番環境のソリューションを探しています。
alert(JSON.stringify(object))
最新のブラウザではどうですか?
の場合、TypeError: Converting circular structure to JSON
その他のオプションがあります。循環参照がある場合でも、DOMノードをJSONにシリアル化する方法は?
ドキュメント:JSON.stringify()
出力のフォーマットまたは見栄えに関する情報を提供します。
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つを書きました。
使用console.dir(object)
とFirebugプラグイン
いくつかの方法があります:
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 ) ;
コンソールを使用します。
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 });
これは、コンソールに書き込まれたオブジェクトにラベルを付けるのに役立ちます。
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);
これは、より読みやすいオブジェクト インスペクタです。コードをここに書き留めるには時間がかかるため、http://etto-aa-js.googlecode.com/svn/trunk/inspector.js からダウンロードできます。
次のように使用します。
document.write(inspect(object));