This question already has answers here:
Get functions (methods) of a class [duplicate]
                            
                                (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.getOwnPropertyNamesObject.getOwnPropertySymbols

09-25 19:39