【发布时间】:2016-10-06 14:08:34
【问题描述】:
我需要能够序列化使用 ECMA6 中的类声明的对象。在使用标准 JavaScript 获取和序列化存储在原型中的“方法”时,我可以轻松使用 toJSON。
var Foo = function(name) {
this.name = name;
}
Foo.prototype = {
doSomething: function() {
return 1;
},
toJSON: function() {
// construct a string accessing Foo.prototype
// in order to get at functions etc. stored in prototype...
}
};
但是如何使用 ECMA6 中的类声明来做到这一点?示例:
class Foo {
constructor(name) {
this.name = name;
}
doSomething() {
return 1;
}
toJSON() {
// Foo.prototype is empty. Because it hasn't been created yet?
}
}
即使在使用new 运算符实例化之后,使用class 创建的对象似乎也有一个空原型。我错过了什么?
【问题讨论】:
-
请修正您的代码格式。这不像您是新用户。
-
作为批量序列化对象的替代方法,您可以序列化它们需要的所有数据,然后使用存储的数据重新创建它们。
-
如果您需要对方法进行字符串化,然后再将它们解析回来,您可能正在做一些您不应该做的事情。
-
@vlaz,这可能行得通。显然,缺点是我必须显式访问函数名称。