我需要能够序列化在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
创建的对象似乎也有一个空原型。我错过了什么?
答案 0 :(得分:1)
你在做什么听起来像个坏主意;但无论如何,原型中的类方法是;它们只是不可枚举,以避免它们出现在for .. in
迭代中(也可能是为了防止像你想做的那样容易做的事情)。您必须使用Object.getOwnPropertyNames
和Object.getOwnPropertySymbols
。