javascript - 从 javascript 函数获取类方法

标签 javascript class

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

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/

相关文章:

javascript - JS 正则表达式 : Wrap content in multiple tags defined in appended lines?

javascript - jQuery 悬停动画期间最后一个 Div 闪烁

javascript - @ 和 ` 符号在 JavaScript 中有什么用处?

php - Laravel/PHP 命名空间路径的简写

Java主类实例访问

javascript - 您可以将事件监听器定位到特定的 Chrome 警报吗?

javascript - 你可以在nodejs中使用Create-React-App npm start吗?

php - 由于 PHP 类,Internet Explorer 无法正确呈现页面

java - 如何在 Java 的抽象类中强制实现嵌套抽象类?

c# - 为什么要屏蔽基类成员?