簡體   English   中英

如何在不外部返回內部的情況下訪問內部函數

[英]How to access function inside function without outer returning inner one

我有一個函數“ alpha”,里面還有另一個函數“ beta”。 如果我不返回alpha測試版,那么如何訪問beta。 反正有這樣做嗎? (就像,我可以訪問alpha編寫window.alpha(),因為在全局上下文中alpha成為窗口對象的屬性,然后如何通過窗口dom樹將beta作為屬性訪問)?

 <html> <head></head> <body> <script> function alpha() { console.log("hi"); function beta() { console.log("hello"); } } alpha(); //works window.alpha(); //works beta(); //it is directly not accessible. How to access it if alpha does not return it </script> </body> </html> 

alpha()在Window Dom中,但為什么不是beta? (即使不在alpha內)

在此處輸入圖片說明

通常,您不能執行此操作,或者您更喜歡這些選項,但是在這些操作中,您必須調用一次alpha才能獲得beta

//第一個選項

(function alpha() { 
  console.log("hi");
  function beta() {
    console.log("hello");
  } 
  window.beta = beta;
})() 

//第二個選項

使用this來創建beta作為alpha屬性

function alpha() {
  this.beta = function() {
    console.log("hello");
  }
}
let alphaObject = new alpha();
alphaObject.beta();

如果您不想返回beta ,則可以返回this並將beta定義為this.beta

要訪問beta() ,您只需要調用alpha().beta()

 function alpha() { console.log("hi"); this.beta = () => { console.log("hello"); } return this; } alpha().beta(); 

beta()方法專用於功能alpha。 Javascript范圍定義的工作方式可防止您直接訪問內部函數。 使用this.beta其創建為alpha的屬性

使用this beta聲明為alpha成員:

 function alpha() { console.log("hi"); this.beta = function() { console.log("hello"); } } let a = new alpha(); a.beta(); 

您當前的實現阻止JavaScript從alpha之外訪問beta 閱讀有關JavaScript中私有函數的更多信息。

使用this方法,您實際上可以將這些方法附加到函數alpha的實例。 這就是我在此解決方案中所做的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM