我正在使用TypeScript定义一些类,当我创建属性时,它会生成Class1与以下plunkr中的等效项:
Class1
http://plnkr.co/edit/NXUo7zjJJZaUuyv54TD9i?p=preview
var Class1 = function () { this._name = "test1"; } Object.defineProperty(Class1.prototype, "Name", { get: function() { return this._name; }, set: function(value) { this._name = value; }, enumerable: true }); JSON.stringify(new Class1()); // Will be "{"_name":"test1"}"
序列化时,它不会输出我刚刚定义的属性。
instance2并instance3通过序列化定义的属性来达到我的期望。(请参阅plunkr输出)。
instance2
instance3
我的实际问题是:这正常吗?
如果是这样,我如何以最有效的方式解决它?
您可以toJSON()在原型上定义一个方法,以自定义实例的序列化方式。
toJSON()
Class1.prototype.toJSON = function () { return { Name: this.Name }; }; JSON.stringify(new Class1()); // Will be '{"Name":"test1"}'