JavaScript中最简单的自修改功能?

时间:2015-12-17 08:16:13

标签: javascript function reflection eval self-modifying

我想研究和摆弄自我修改功能并知道JavaScript有eval和其他有趣的反射功能,比如让函数从内部打印它的身体,我想我想用JavaScript做一些自修改功能测试。

我希望有一个简单的函数,当被调用时,根据任何规则修改自己。

也许某些功能可以先做一个简单的console.log,然后在下次调用时它会改为alert。使用if显然可以实现这一点,但我在这里寻找的是实际的物理函数应该首先看起来像这样:

function selfm()
{
    console.log('hello')
    // + modify self here somehow
}

第一次通话后:

function selfm()
{
    alert('hello')
}

我如何以最简单的形式实现这种行为?

1 个答案:

答案 0 :(得分:3)

这可能不是一个很好的解决方案,但希望它有所帮助。

function selfm(str){
 this.print = eval("(function a() {"+str+"})") ;
 this.print();
} 

然后你可以调用你希望你的函数充当的任何字符串参数。

selfm("console.log('Hello');");
// will print Hello in console.

selfm("alert('Hello');");
// will alert Hello

还需要在不同的浏览器上进行测试。 :)