【发布时间】:2020-10-30 23:05:03
【问题描述】:
我知道我们通常如何调用类的常规方法或类的静态方法,但我刚刚意识到我不知道如何在静态方法中调用类的常规方法:|
类似的东西
module.exports = class Notification {
parsing_html(order) {
// some parsing
}
static async send_notification(_id){
const order = await Order.findOne({ _id });
this.parsing_html(order);
}
};
我用this算了,还是不行。
我在这里错过了什么?
提前感谢您的任何帮助/建议。
【问题讨论】:
-
您不能从静态方法调用实例方法。并非没有实际的实例。根据定义,静态方法与任何一个实例都不相关。为什么这种方法完全是静态的?好像那是错的。要么,要么
parsing_html应该是静态的。 -
@VLAZ 知道了,谢谢 :D 我在玩,只是想尝试一下,但谷歌搜索后没有得到任何东西:|
-
那我建议复习一下什么是静态方法。你试图做的事情基本上是不可能的。再一次,不是没有改变你真正想做的事情。如果
Notification是单例,或者您可以获得对象的实例,那么您可以在静态方法调用中使用它。或者你总是可以实例化对象,但那会是代码味道,表明设计或界面是错误的。 -
解决此问题的一种方法是致电
new this().parsing_html(order)。但是,这是不好的做法,如果构造函数需要参数,则不起作用。
标签: javascript class methods