[英]Invoking private method from static method ES6
我無法從類中的靜態方法調用私有或非靜態方法,下面是示例
class a {
fun1(){
console.log('fun1');
}
static staticfun(){
console.log('staticfun');
this.fun1();
}
}
a.staticfun();
我試圖只暴露staticfun方法,它在內部調用所有私有方法,但這給了我this.fun1
不是一個函數。 我試圖用'this'找到很多找到它的方法,但確實有效。
如何在靜態方法中調用私有實例方法?
fun1
不是靜態函數,因此您需要定義a
類的新實例才能調用它:
class a { fun1() { console.log('fun1'); } static staticfun() { console.log('staticfun'); new this().fun1(); } } a.staticfun();
但是你應該注意到這不是一個好習慣。 您不應該依賴非靜態邏輯的靜態方法。
一種解決方法是,以實例通過a
對靜電功能,但完全無視具有在第一位置的靜態方法的點。
首先,閱讀這個問題
有可能,您可以創建類a
的實例,然后從實例中調用方法fun1
。
雖然,從靜態方法調用非靜態方法是沒有意義的。
static表示此方法屬於對象(不屬於實例)
class a { fun1(){ console.log('fun1'); } static staticfun(){ console.log('staticfun'); const classInstance = new a() classInstance.fun1(); } } a.staticfun();
另一種方法是直接從類原型調用函數(意思是字面上的prototype
屬性,而不是__proto__
),如果你想避免實例化它。
class a {
fun1(){
console.log('fun1');
}
static staticfun(){
console.log('staticfun');
this.prototype.fun1();
}
}
a.staticfun();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.