假设我有以下函数:
function a() {
function b() {
console.log('b')
}
console.log('a')
b()
}
a()
从外部范围,当我调用function a()
时,我得到以下结果
a()
> 'a'
> 'b'
有没有什么方法可以让我在不修改原始函数的情况下直接从外部范围调用function b()
?从外部范围来看,我只能访问a
。类似这样的东西:
a.b()
> 'b'
我需要任何可能的肮脏的解决方案。
在a()
运行后,没有任何对b
的引用,因此它是完全不可访问的。根据最终目标是什么-作为一个非常脏的解决方案,可以执行a.toString()
,然后将内部零件转储到eval
中。
如果从a
返回对该函数的引用,则可以执行此操作,但必须对其进行修改。
function a() {
function b() {
console.log('b')
}
console.log('a')
b()
return b;
}
const b = a()
b();