uneval
toSource のラッパっぽい uneval っていう関数があるみたいだ (いつからあるんだろ)。toSource は null とか undefined のときエラーになるけど (オブジェクトじゃないから) これだとならない。
uneval(null); //=> "null"
uneval({1:undefined}); //=> "({1:(void 0)})"
http://malblue.tumblr.com/post/20163446
かなりまえからあるらしい。(1.5) String.prototype.quote とかいうのもあるらしい。Ruby の String#dump 相当かなぁ