Jef*_*eff 3 javascript nested function
我似乎无法为此获得正确的语法.我知道如何深入访问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());
Run Code Online (Sandbox Code Playgroud)
该secondFn实际上是一个函数对象.所以,你需要像这样调用它
console.log(firstFn.secondFn().inner());
Run Code Online (Sandbox Code Playgroud)
注意:你的内部secondFn()返回一个对象,而不是一个函数.所以,你需要像这样改变它
return {
secondFn: function() {
return secondFn; // Note the absence of `()`
}
};
Run Code Online (Sandbox Code Playgroud)
注意:我强烈建议您为函数和对象使用不同的名称,例如:因此,理解正在发生的事情会更容易让人困惑.
var firstFn = (function() {
var innerSecond = (function() {
function innerFunction() {
return "hi";
}
return {
inner: function() {
return innerFunction();
}
}
})();
return {
secondFn: function() {
return innerSecond;
}
};
})();
Run Code Online (Sandbox Code Playgroud)
所以,firstFn是一个具有被称为属性的对象secondFn,它是一个函数.
当secondFn调用它时,它返回另一个被调用的对象innerSecond,该对象具有一个名为innervalue 的属性.
当你调用时inner,它实际上会调用innerFunction并返回结果hi.
如果你想遵循与in相同的模式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());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
156 次 |
| 最近记录: |