从javascript函数获取类方法

Luo*_*ize 0 javascript class

假设我有一个函数,我需要检查它是否具有某个名称的类方法.例如:

function Foo() {
    this.bar = function() {
        console.log("I am bar!");
    }
}
Run Code Online (Sandbox Code Playgroud)

我想检查Foo类是否实际上有bar方法.我可以创建一个新的Foo实例,然后检查它,我只是想知道是否有更好的方法来做到这一点.

T.J*_*der 6

我可以创建一个新的Foo实例,然后检查它,我只是想知道是否有更好的方法来做到这一点.

不,如果在构造函数中添加方法,就像在示例中一样.在创建实例之前无需检查.(好吧,除了构造函数的源代码,正如Pointy在评论中指出的那样.)

如果它被定义Foo.prototype,那将是另一回事:

function Foo() {
}
Foo.prototype.bar = function() {
    console.log("I am bar!");
};
Run Code Online (Sandbox Code Playgroud)

然后你可以通过寻找来检查Foo.prototype.bar.


旁注:称他们为"班级方法"可能会让人感到困惑.在基于类的OOP中,"类方法"通常不是特定于实例的类,而不是特定于实例但由类定义的类方法.当然,JavaScript没有基于类的OOP(它具有典型的OOP,即使在ES6中也增加了类似类的陷阱).