2017-10-13 181 views
0

我想從存儲在同一類的另一個函數中的對象內部調用一個類的函數。我不能使用this,因爲它指的是對象而不是類。直接按名稱調用函數也不起作用,因爲它會拋出「未定義」錯誤。如何從對象內部調用類函數?

我的代碼等價於:

class X extends Y { 
    functionA() { 
     console.log("Function called!"); 
    } 
    functionB() { 
     window.testObject = { 
      objectFunction() { 
       // I need to call functionA from inside here 
      } 
     } 
    } 
} 

我怎麼能說functionA從內objectFunction

+0

https://stackoverflow.com/questions/20279484/how-to-access-the-correct-this-inside-a-callback中的所有解決方案也適用於此處。 –

回答

3

this更改之前,您可以簡單地設置另一個變量(例如,self)等於this

class X extends Y { 
    functionA() { 
     console.log("Function called!"); 
    } 
    functionB() { 
     let self = this; 
     window.testObject = { 
      objectFunction() { 
       // I need to call functionA from inside here 
       self.functionA(); 
      } 
     } 
    } 
} 
+1

您的回答沒有錯,但請注意,這是一種*代碼氣味*,即不良設計的症狀。 –

+0

完美地工作,現在我知道答案很明顯。謝謝!只要它允許我這樣做,我會盡可能地標記出來。 – dieortin

+0

@JaredSmith我怎麼能做得更好?我使用的是Google Webfonts加載器,它需要一個對象,其中包含加載字體時調用的回調方法(https://github.com/typekit/webfontloader)。我正在做所有這些類,並且需要在字體完成加載時呈現一些文本。 – dieortin