假设我有一个函数,我需要检查它是否具有某个名称的类方法。例如:
function Foo() {
this.bar = function() {
console.log("I am bar!");
}
}
我想检查 Foo 类是否确实有 bar 方法。 我可以创建一个新的 Foo 实例,然后检查它,我只是想知道是否有更好的方法来做到这一点。
最佳答案
I can create a new instance of Foo and then check it, I was just wondering if there was a better way to do this.
不,如果该方法像您的示例一样添加到构造函数中,则不会。在创建实例之前无需检查任何内容。 (嗯,除了构造函数的源代码,如 Pointy points out in a comment 。)
如果它是在 Foo.prototype
上定义的,那就是另一回事了:
function Foo() {
}
Foo.prototype.bar = function() {
console.log("I am bar!");
};
然后您可以通过查找 Foo.prototype.bar
进行检查。
旁注:称它们为“类方法”可能会让人感到困惑。在基于类的 OOP 中,“类方法”通常是不特定于实例的方法,而不是特定于实例但由类定义的方法。当然,JavaScript 没有基于类的 OOP(相反,它具有原型(prototype) OOP,即使从 ES6 开始,它添加了更多类似类的装饰)。
关于javascript - 从 javascript 函数获取类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27889925/