我想做的是拦截javascript中的所有函数调用,如果它们是由 new Function
或 function
.
换句话说,要或许为所有将要创建的函数做一个Proxy。在函数初始代码之前执行一些代码。
所以我的问题是。
有什么方法可以做到这一点吗?
有办法改变Function.prototype吗?它是内置的可配置:false。能否改变。
我想在electron中做这个,所以我可以改变V8的标志,启用实验。
能否通过使用 --allow_natives_syntax
标志?
有没有办法改变内部[[Call]]?
我知道为什么我不应该这样做的所有原因。我只对一个可以做到的方法感兴趣。
- 有什么方法可以做到这一点?
没有。
- 有办法改变Function.prototype吗?它是内置的configable:false。可以改变吗?
不可以。
- 如果使用--allow_natives_syntax标志启用原生函数,可以做到这一点吗?
不可以。
- 有办法改变内部[[Call]]吗?
没有。
如果你只是对跟踪函数调用感兴趣,你可以使用V8现有的 --trace
标志。在JavaScript中不可能复制该功能(否则该标志就不会存在)。