假设我有以下功能:
function a() {
function b() {
console.log('b')
}
console.log('a')
b()
}
a()
从外部作用域,当我调用 function a()
时,我得到以下结果
a()
> 'a'
> 'b'
有什么方法可以让我直接从外部作用域调用 function b()
而不修改原始函数?从外部范围,我只能访问 a
。像这样:
a.b()
> 'b'
我需要任何可能的肮脏解决方案。
答案 0 :(得分:0)
在 b
运行后,没有任何东西包含对 a()
的任何引用,因此完全无法访问。取决于最终目标是什么 - 作为一个非常肮脏的解决方案,您可以做 a.toString()
然后将内部部件转储到 eval
中。
答案 1 :(得分:-1)
如果您从 a
返回对该函数的引用,您可以这样做,但您必须修改它。
function a() {
function b() {
console.log('b')
}
console.log('a')
b()
return b;
}
const b = a()
b();