【问题标题】:Run function whenever var is defined每当定义 var 时运行函数
【发布时间】:2013-02-11 20:07:11
【问题描述】:

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

有没有办法在 JS 中做到这一点?

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • Esprima 看起来很有希望。谢谢!
    猜你喜欢
    • 2011-10-22
    • 2011-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    • 2019-12-16
    相关资源
    最近更新 更多