Object.prototype.toJSONString = function () { var a = [\'{\'], // The array holding the text fragments. b, // A boolean indicating that a comma is required. k, // The current key. v; // The current value. function p(s) { // p accumulates text fragment pairs in an array. It inserts a comma before all // except the first fragment pair. if (b) { a.push(\',\'); } a.push(k.toJSONString(), \':\', s); b = true; } // Iterate through all of the keys in the object, ignoring the proto chain. for (k in this) { if (this.hasOwnProperty(k)) { v = this[k]; switch (typeof v) { // Values without a JSON representation are ignored. case \'undefined\': case \'function\': case \'unknown\': break; // Serialize a JavaScript object value. Ignore objects that lack the // toJSONString method. Due to a specification error in ECMAScript, // typeof null is \'object\', so watch out for that case. case \'object\': if (this !== window) { if (v) { if (typeof v.toJSONString === \'function\') { p(v.toJSONString()); } } else { p("null"); } } break; default: p(v.toJSONString()); } } } // Join all of the fragments together and return. a.push(\'}\'); return a.join(\'\'); };
相关文章: