如何在ECMA6中引用“实例方法”

时间:2016-10-06 14:08:35

标签: javascript ecmascript-6

我需要能够序列化在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创建的对象似乎也有一个空原型。我错过了什么?

1 个答案:

答案 0 :(得分:1)

你在做什么听起来像个坏主意;但无论如何,原型中的类方法;它们只是不可枚举,以避免它们出现在for .. in迭代中(也可能是为了防止像你想做的那样容易做的事情)。您必须使用Object.getOwnPropertyNamesObject.getOwnPropertySymbols