我似乎无法获得正确的语法。我知道如何访问 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
的属性,其值为 function。
当你调用 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());
关于javascript - 如何访问多个嵌套函数的最内层函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34750388/