Javascript 如何从外部访问内部嵌套函数?

Javascript 如何从外部访问内部嵌套函数?,javascript,Javascript,下面是我陷入困境的示例代码: <script> var mod = (function(){ var inn1; function innfunc(){ } }()); //mod is self expression function </script> var mod=(函数(){ var inn1; 函数innfunc(){ } }()); //mod是自表达函数 假设HTML包

下面是我陷入困境的示例代码:

    <script>
    var mod = (function(){
        var inn1;
        function innfunc(){

        }
    }()); //mod is self expression function
    </script>

var mod=(函数(){
var inn1;
函数innfunc(){
}
}()); //mod是自表达函数
假设HTML包含此javascript代码,我想打开Java控制台并调用
innfunc()
或变量
inn1
,那么我可以写什么呢

可能是这样的:
mod.innfunc()

您必须通过从函数内部返回来公开“公共接口”:

return {
    inn: inn1,
    innfunc: innfunc
}
然后,您可以使用
mod.inn
mod.innfunc

尝试以下操作:

 var mod = function(){

    this.inn1 = "Hello";

    this.innfunc = function(){
      console.log('Here');
    }

  }; 
  var x = new mod();
  console.log(x.inn1);
  x.innfunc();

您可以使用它公开变量和方法

您执行了一个匿名函数,并将该函数的结果分配给了
mod
您不再有权访问该匿名函数或其任何属性

如果您想稍后访问它的任何属性,有多种方法可以做到这一点。其中之一是:

返回一个对象,该对象具有此函数之外所需的属性

var mod = (function() {
  var inn1 = 'somevalue';

  var innfunc = function() {
  };

  return {
    inn1: inn1,
    innfunc: innfunc
  };
}()); //mod is self expression function

现在,您可以通过
mod.innfunc()
+1访问其他人所说的内容。我猜是他们打败了我,哈哈

我还添加了一个示例,说明您可以在函数中保持私有:

var mod = (function() {

    var publicText = 'Public!';
    var privateText = 'Private';

    var func1 = function() {
        console.log('hi');
    };

    var func2 = function() {
        console.log('there');
    };

    return {
        hi: func1,
        there: func2,
        publicText: publicText
    };
})();

mod.hi();
mod.there();

console.log(mod.publicText);

// This will fail, since the object.key privateText was never defined
console.log(mod.privateText);

希望这有帮助

您可以返回innfunc,如下所示:我认为这篇文章可能会在以下方面对您有所帮助: