来自 Java,具有字节码编辑经验,我想知道是否可以使用 Javascript 在运行时更改函数体。
对于这个问题,我们以下面的代码为例:
function myFunction(paramA, paramB) {
console.log('a', paramA);
console.log('b', paramB);
}
在运行时,我希望能够将正文更改为:
function myFunction(paramA, paramB) {
console.log('a', paramA);
console.log('hello inserted world');
console.log('b', paramB);
}
如果这是可能的,我知道它将增加代码库的复杂性。因此,如果可能的话,在小组项目中(或者最终必须有人接管时)应该避免这种情况,但这不是现在的问题。
真正的问题是,这是否可能(或者可以近似)以及如何实现?我不是在寻找代码示例,伪代码就足够了!
一些要求/规则/注释:
- 该示例包含函数声明,但函数表达式也可以接受。
- 该函数可能会被完全覆盖;现有的引用资料可能会丢失。
- 整个应用程序将被缩小,答案应该考虑到这一点。
- 插入的代码必须紧接在第一个
console.log
之后插入,无论正文中是否存在任何其他代码。 - 该函数必须可通过
myFunction(a, b)
执行。
最佳答案
我想这取决于代码的来源。总有 JavaScript 的 eval()声明,但由于可能存在安全漏洞,通常(强烈)不鼓励这样做。请参阅this article .
关于javascript - 在运行时将代码插入到函数体中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28984047/