JavaScriptのオブジェクトの中身を表示するメソッド。
http://smokycat.info/category_javascript/106 この記事に張り合って書いてみた。
理系の人のコードはやたら短いし、変数名一文字だし、凄いですね。
dumpObject(obj)
で戻り値はJSON形式になっています。
※Javaでいうprivateで定義されている変数までは取得できません。
function dumpObject(obj,index,objKey){
index=index?index:0;index++;
var returnStr = “”;
var tab = “”;
for(i=1;i<index;i++)tab+=”t”;
returnStr += “n”+tab+(objKey?”””+objKey+””:”:””)+”{“;
for(key in obj)
returnStr += typeof obj[key]==”object”?
dumpObject(obj[key],index,key):
“n”+tab+”t”+”””+key+””:”+(typeof obj[key]==”string”?”””+obj[key]+”””:obj[key])+”,”;
return returnStr.substring(0,returnStr.length-1) + “n”+tab+”}”+(!objKey?””:”,”);
}
以下のように使ってみてください。
window.open().document.write(dumpObject(eval(“(“+window.prompt()+”)”)).replace(/n/g,”<br>”).replace(/t/g,” ”));
ほとんど必要ないと思いますが、以下のようにしてオブジェクトを復元できます。
eval(“(“+dumpObject(obj)+”)”);
Bookmarklet用
(function f(a,b,c){b=b?b:0;b++;var d=””;var e=””;for(i=1;i<b;i++)e+=”t”;d+=”n”+e+(c?”””+c+””:”:””)+”{“;for(k in a)d+=typeof a[k]==”object”?f(a[k],b,k):”n”+e+”t”+”””+k+””:”+(typeof a[k]==”string”?”””+a[k]+”””:a[k])+”,”;return d.substring(0,d.length-1)+”n”+e+”}”+(!c?””:”,”)})(obj)
この無名関数の引数(赤文字部分)にオブジェクトを渡してください。