在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
。
在这种情况下,字符串化的正确方法是什么?
答案 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))