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,如下所示:我认为这篇文章可能会在以下方面对您有所帮助: