lcl_1015

--------------------------

var a = { a: "aaa", b: "bbb", c: 123 };
var s = a.toJSON();
alert(s);

-------------------------------------------

Object.prototype.deep_clone = function()
{
    eval("var tmp = " + this.toJSON());
    return tmp;
}
Object.prototype.toJSON = function()
{
    var json = [];
    for (var i in this)
    {
        if (!this.hasOwnProperty(i)) continue;
        //if(typeof this[i] == "function") continue;  
        json.push(
            i.toJSON() + " : " +
            ((this[i] != null) ? this[i].toJSON() : "null")
        )
    }
    return "{\n " + json.join(",\n ") + "\n}";
}
Array.prototype.toJSON = function()
{
    for (var i = 0, json = []; i < this.length; i++)
        json[i] = (this[i] != null) ? this[i].toJSON() : "null";
    return "[" + json.join(", ") + "]"
}

String.prototype.toJSON = function()
{
    return \'"\' +
        this.replace(/(\\|\")/g, "\\$1")
        .replace(/\n|\r|\t/g, function()
        {
            var a = arguments[0];
            return (a == \'\n\') ? \'\\n\' :
                    (a == \'\r\') ? \'\\r\' :
                    (a == \'\t\') ? \'\\t\' : ""
        }) +
        \'"\'
}
Boolean.prototype.toJSON = function() { return this }
Function.prototype.toJSON = function() { return this }
Number.prototype.toJSON = function() { return this }
RegExp.prototype.toJSON = function() { return this }

// strict but slow  
String.prototype.toJSON = function()
{
    var tmp = this.split("");
    for (var i = 0; i < tmp.length; i++)
    {
        var c = tmp[i];
        (c >= \' \') ?
            (c == \'\\\') ? (tmp[i] = \'\\\\\') :
            (c == \'"\') ? (tmp[i] = \'\\"\') : 0 :
        (tmp[i] =
            (c == \'\n\') ? \'\\n\' :
            (c == \'\r\') ? \'\\r\' :
            (c == \'\t\') ? \'\\t\' :
            (c == \'\b\') ? \'\\b\' :
            (c == \'\f\') ? \'\\f\' :
            (c = c.charCodeAt(), (\' \\u00\' + ((c > 15) ? 1 : 0) + (c % 16)))
        )
    }
    return \'"\' + tmp.join("") + \'"\';
}

 

分类:

技术点:

相关文章: