toSourceってこんなに便利だったのね(2)
先のエントリtoSourceってこんなに便利だったのね - ヒルズで働く@robarioの技ログの絡みで、id:higeorangeさんがOpera用のtoSourceを作ってくださいました。Opera用とありますが、そのままIEでも動きましたので早速使わせていただいております。感謝感謝。
ところでFirefoxのtoSourceでは
{'a':{'b':'hoge','c':33}}.toSource();
が
({a:{b:"hoge", c:33}})
になるのですが、higeorangeさんのtoSでは
({a:({b:"hoge", c:33})})
と入れ子になった連想配列に余分なカッコが付いてしまうので、適当にパッチを当てました。
--- toSource.js.orig 2006-10-12 20:28:50.643948800 +0900 +++ toSource.js 2006-10-12 20:28:32.678115200 +0900 @@ -24,25 +24,29 @@ } return res; } else if(con == Object) { - var res = '({'; + var res = '{'; var i=0; for(var j in this) { if(j != 'toS') { if(i == 0) { - res += j + ':' + this[j].toS(); + res += j + ':' + this[j].toS(1); } else { - res += ', ' + j + ':' + this[j].toS(); + res += ', ' + j + ':' + this[j].toS(1); } i++; } } - res += '})'; - return res; + res += '}'; + if (arguments.length) { + return res; + } else { + return '('+res+')'; + } } }
これで出力が
({a:{b:"hoge", c:33}})
となってFirefoxのtoSourceと(多分)同じになりました。