如何使用属性对Javascript函数对象进行字符串化?

时间:2015-07-03 09:56:11

标签: javascript json typescript stringify

在typescript中,当每个静态成员成为函数对象属性时,会将具有静态成员的类编译为函数。

例如:

class Config {
    static debug = true;
    static verbose = false;
}

变为

var Config = (function () {
    function Config() {
    }
    Config.debug = true;
    Config.verbose = false;
    return Config;
})();

JSON.stringify将导致在此类函数对象上调用undefined。 在这种情况下,字符串化的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

请注意JSON.stringify不接受这些功能。你可以这样做:

  

如果正在进行字符串化的对象具有名为toJSON的属性,其值为函数,则toJSON()方法自定义JSON字符串化行为:而不是被序列化的对象,toJSON返回的值( )被调用的方法将被序列化。

一个例子:



Function.prototype.toJSON = Function.prototype.toJSON || function(){
    var props = {};
    for(var x in this){
        if(this.hasOwnProperty(x)) props[x] = this[x]
    }
    return props
}

var Config = (function () {
    function Config() {
    }
    Config.debug = true;
    Config.verbose = false;
    return Config;
})();

console.log(JSON.stringify(Config))