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)
この無名関数の引数(赤文字部分)にオブジェクトを渡してください。
「JavaScript Object Dumper」への1件の返信
レスポンスありがとうございます!
変数名が一文字なのは、ブックマークレットの文字数制限があるので短い方がいいかなぁ・・・と思ったからですが、無意味に可読性を損なっただけだったかもw
オブジェクトを復元するとき、異なるプロパティに同一のオブジェクトが入ってる状態まで復元できたら完璧なんですけどね。