如何访问几个嵌套函数中最内层的函数
How can I access the innermost function of several nested functions?
我似乎找不到正确的语法。我知道如何访问1级深的功能,但2级对我不起作用。
var firstFn = (function() {
var secondFn = (function() {
function inner() {
return "hi";
}
return {
inner: function() {
return inner();
}
}
})();
return {
secondFn: function() {
return secondFn();
}
};
})();
console.log(firstFn.secondFn.inner());
secondFn
实际上是一个函数对象。所以,你需要像这个一样调用它
console.log(firstFn.secondFn().inner());
注意:您的内部secondFn()
返回一个对象,而不是函数。所以,你需要像这个一样改变它
return {
secondFn: function() {
return secondFn; // Note the absence of `()`
}
};
注意:我强烈建议您对函数和对象使用不同的名称,如下所示。这样就可以减少对正在发生的事情的理解。
var firstFn = (function() {
var innerSecond = (function() {
function innerFunction() {
return "hi";
}
return {
inner: function() {
return innerFunction();
}
}
})();
return {
secondFn: function() {
return innerSecond;
}
};
})();
因此,firstFn
是一个对象,它有一个称为secondFn
的属性,这是一个函数。
当调用secondFn
时,它会返回另一个名为innerSecond
的对象,该对象具有一个称为inner
的属性,其值为函数。
当您调用inner
时,它实际上调用innerFunction
并返回结果hi
。
如果您想遵循与innerSecond
中相同的模式,那么您需要按原样返回函数对象,而不是像下面的那样调用它
var first = (function() {
var innerSecondFunction = function() {
function innerFunction() {
return "hi";
}
return {
inner: function() {
return innerFunction();
}
}
}; // Note that we don't invoke the function object here
return {
secondFn: function() {
return innerSecondFunction(); // but we invoke here
}
};
})();
console.log(first.secondFn().inner());
相关文章:
- 用嵌套函数和默认函数定义函数
- d3中堆栈函数和嵌套函数之间的差异
- JavaScript 中的嵌套函数和 “this” 关键字
- 嵌套到另一个函数中的Fancybox函数;不起作用
- Javascript中带有返回值的嵌套函数
- 访问嵌套函数结构中的JavaScript父函数变量
- 从嵌套函数访问函数属性
- 如何在javascript中使用嵌套函数作为生成器(使用“inner”yields)
- Javascript嵌套函数属性继承
- 具有嵌套对象数组的 Javascript 对象的递归搜索函数
- Facebook Javascript 函数嵌套循环
- 将动态 AJAX 函数嵌套在 JavaScript 函数中 - 并保持更新
- 对由多个groupBy函数嵌套的对象数组进行分组
- 从父函数返回什么以获取从子函数/嵌套函数返回的值
- jQuery匿名函数-嵌套函数
- ajax调用函数嵌套
- 函数嵌套括号的Python风格指南是什么?
- setTimeout函数中的关键字,该函数嵌套在on()方法下.但这并没有奏效
- 嵌套异步函数嵌套同步函数
- 如何克服函数嵌套