Javascript:Unicodeでエンコードされた2バイト文字を元に戻す

主にExtendScriptでしか活用できないと思いますが、JSで日本語などの2バイト文字をtoSource()するとUnicodeに変換されてしまいます。例えば「あ」は「\u3042」と表示されます。

このままでは使いにく場面があるので、元の2バイト文字に戻すコードを作成しました。replace以下のコードです。

var japanese = "ひらがなABCDカタカナ01234漢字";
var encoded = japanese.toSource();
alert(encoded); //→ (new String("\u3072\u3089\u304C\u306AABCD\u30AB\u30BF\u30AB\u30CA01234\u6F22\u5B57"))

var decoded = encoded.replace(/(\\u)([0-9A-F]{4})/g, function(match,p1,p2){
  return String.fromCharCode(parseInt(p2, 16));
});
alert(decoded); //→ (new String("ひらがなABCDカタカナ01234漢字"))