ES6-调用类中的静态方法
ES6 - Call static method within a class
我有一个类,它对静态方法进行内部调用:
export class GeneralHelper extends BaseHelper{
static is(env){
return config.get('env:name') === env;
}
static isProd(){
return GeneralHelper.is('prod');
}
}
有没有任何关键字我可以用来替换下面一行中的类名:
GeneralHelper.is('prod');
PHP中有self
、static
等。ES6提供了类似的功能吗?
TY。
如果您从实例内部调用静态函数,那么引用该类的静态函数的正确方法是:
this.constructor.functionName();
从常规ES6类方法调用静态方法
这与在普通对象上调用方法相同。如果您调用GeneralHelper.isProd()
方法,则GeneralHelper
将在该方法中作为this
可用,因此您可以使用
class GeneralHelper {
static is(env) { … }
static isProd(){
return this.is('prod');
}
}
然而,当方法像往常一样作为回调函数传递时,这将不起作用。此外,当有人从您的类继承isProd
并覆盖is
时,这可能与显式访问GeneralHelper
不同,InheritedHelper.isProd()
将产生其他结果。
如果您希望从实例方法调用静态方法,请参阅此处。还要注意,只定义静态方法的类是一个奇怪的类,您可能需要使用普通对象。
这里的两个答案都是正确和好的,但我想在这个问题标题的基础上增加一个细节。
当我看到"ES6-在类中调用静态方法"时,它听起来像是"在类中(从非静态方法)调用一个静态方法"。不要质疑最初提问者在细节中提出的问题。
但对于任何想知道如何从类中的非静态方法调用静态方法的人来说,你可以这样做:
class MyClass {
myNonStaticMethod () {
console.log("I'm not static.")
MyClass.myStaticMethod()
}
static myStaticMethod () {
console.log("hey, I'm static!")
}
}
MyClass.myStaticMethod() // will log "hey, I'm static!"
const me = new MyClass()
me.myNonStaticMethod() // will log "I'm not static" and then "hey, I'm static!"
其思想是,可以在不创建类的新实例的情况下调用静态方法。这意味着您可以在实例的方法内部调用它,就像在实例外部调用它一样。
同样,我知道这不是问题的细节所要求的,但这可能会对其他人有所帮助。
相关文章:
- 如何在webView,Android中从@JavascriptInterface方法调用Javascript
- 无法理解JavaScript中的静态方法
- 从构造函数es6调用静态方法
- 如何理解“当类实例化时,JavaScript静态方法也是不可调用的”
- 使用 Babel 转译器导入类并调用带有 ES6 模块的静态方法
- 从常规ES6类方法中调用静态方法
- Jquery UI 调用小部件的静态方法
- 如何定义扩展方法并将其作为实例和静态方法调用
- 从JavaScript调用PHP静态方法,而无需中间PHP脚本
- Javascript类扩展:从子类函数调用基类函数:似乎在调用静态方法
- 动态调用JavaScript / ES7类中的静态方法
- 如何在ASP上调用静态方法?Net页面,来自Javascript
- 如何从aspx调用非静态方法
- 从父类调用重写的静态方法
- 如何在data-ng-click中传递调用动态方法而不是静态方法(即想要传递要调用的方法而不是固定的delete()方法
- 我如何使用javascript调用在代码中编写的非静态方法
- 从cshtml文件调用静态方法
- ES6-调用类中的静态方法
- 从javascript调用静态方法
- 从c#静态web方法(page方法)调用Javascript函数