如何获取对“实例方法”的引用;在ECMA6

How to get reference to "instance methods" in ECMA6

本文关键字:实例方法 引用 ECMA6 何获取 获取      更新时间:2023-09-26

我需要能够序列化用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