javascript - 每当定义 var 时运行函数

标签 javascript eval user-input user-defined-functions

我正在开发一个包含大量用户生成代码的项目(受到此视频 http://vimeo.com/36579366 的启发)。我想要做的是 eval() 一段用户输入代码,并在每次定义 var、或两个变量相乘或发生其他操作时运行一个函数。

JS 有办法做到这一点吗?

显然,我可以在该字段中搜索“var ...”,然后阅读接下来的内容,然后使用该信息执行我需要执行的操作,但是,出于多种原因,我宁愿这样做“合法地”,我实际上对正在执行的事情使用react。

最佳答案

您可以使用Intercession API在某些版本的 Javascript(也称为代理)中。由此,您可以通过编写自己的代码来重新定义当对象发生变化时会发生什么。

如果不可能,但您事先知道变量的名称,则可以使用 setters, getters ,或者 Object.watch 的 polyfill达到同样的效果。

如果您不知道变量名称是什么,我建议通过像Esprima这样的解析器运行用户定义的Javascript。获得 AST。当您看到变量被定义(或提升)时,您可以将任意语法直接注入(inject) AST,然后编译回工作代码。您将寻找带有 "type": "VariableDeclaration" 的 JSON 对象。

关于javascript - 每当定义 var 时运行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14819949/

相关文章:

php - 在我的页面上显示用户输入

Shell脚本读取文件路径直到文件存在

javascript - HTML5 Canvas : How to border a fillRect?

javascript - jQuery 数组问题

javascript - 未能 "dynamically"导入 date-fns/locale 库 - TypeScript 给出尝试导入错误

javascript - 比较 javascript 中的两个 eval() 对象

php - Cakephp 3 输入自动标签

JavaScript 动画 - 在到达外部 div 边界时停止内部 div 移动

docker - 命令 `eval $(minikube docker-env)` 与 `Using eval $(minikube -p minikube docker-env)`

javascript - 获取对 JavaScript 中 eval() 期间创建的局部变量的引用