, RegExp ]; var builtinToJSONs = builtinTypes.map(function(t) { return t.toJSON; }); var builtinArray = Array; var builtinJSONStringify = JSON.stringify; Save('JSON', { parse: JSON.parse, stringify: function(obj) { var savedToJSONs = new builtinArray(builtinTypes.length); try { for (var i = 0; i < builtinTypes.length; ++i) { try { if (builtinTypes[i].prototype.toJSON !== builtinToJSONs[i]) { savedToJSONs[i] = builtinTypes[i].prototype.toJSON; builtinTypes[i].prototype.toJSON = builtinToJSONs[i]; } } catch (e) {} } } catch (e) {} try { return builtinJSONStringify(obj); } finally { for (var i = 0; i < builtinTypes.length; ++i) { try { if (i in savedToJSONs) builtinTypes[i].prototype.toJSON = savedToJSONs[i]; } catch (e) {} } } } }); }());