我正在开发一个包含大量用户生成代码的项目(受到此视频 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/