This question already has answers here:
Get functions (methods) of a class [duplicate]
(5个答案)
3年前关闭。
我需要能够序列化使用ECMA6中的类声明的对象。使用标准JavaScript来获取和序列化原型中存储的“方法”时,我可以轻松地使用
但是,如何使用ECMA6中的类声明来做到这一点?例:
即使使用
(5个答案)
3年前关闭。
我需要能够序列化使用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
创建的对象似乎也具有空的原型。我想念什么? 最佳答案
你在做什么听起来好像是个坏主意;但是无论如何,类方法都在原型中。它们只是不可枚举的,以避免使它们出现在for .. in
迭代中(并且还可能防止像您尝试执行的操作那样容易执行)。您将必须使用Object.getOwnPropertyNames
和Object.getOwnPropertySymbols
。
09-25 19:39