繁体   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