簡體   English   中英

如何從分配給變量的外部函數調用內部函數

[英]how to call function inner function from outer one assigned to a variable

我有這個功能

   var x = function outer() { 
      console.log('outer')
      this.inner = function() {
          console.log("inner");
      }
  }

問題是如何在此范圍之外調用內部函數? 我試過x().inner()但它不起作用

您嘗試使用類型函數作為類試試這個:

  class Outer {

     inner () {
         console.log("inner");
     }
   }
   console.log(new Outer.inner()) //output inner

這里有一些參考https://www.w3schools.com/js/js_classes.asp

您的outer函數不返回值。

在您的代碼中發生的情況是,當您運行x() ,它將執行outer函數,該函數將log一些內容到控制台,聲明this.inner並退出。

您需要做的是在outer函數的末尾返回this

像這樣:

var x = function outer() { 
    console.log('outer')
    this.inner = function() {
        console.log("inner");
    }

    return this;
}

然后你可以做x().inner() ,它會完美地工作!

以你做的方式。

這個關鍵字指向 window 對象,所以如果你想調用內部,你可以

使用 window.inner();

但是如果你想把它用作一種方法,你必須使用 new 關鍵字。 new 關鍵字創建一個新對象並將 this 關鍵字關聯到它,因此在我的示例中,inner 可以成為某些東西的方法。

 function Outer() { console.log('outer') this.inner = function() { console.log("inner"); } } var something = new Outer(); something.inner();

我不能從外部函數返回 this,我可以從 x 變量訪問內部函數嗎? - Tarik Ziyad 的(OP) 評論

如果你想執行內部函數,你可能會這樣的事情,然后(或樣機):

 var outer = function () { this.inner = function() { return 'inner'; } return 'outer'; } outer.prototype.innerProto = function() { return 'inner-proto'; } var x = new outer; console.log(x.inner()); console.log(x.innerProto());

暫無
暫無

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

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