我想研究和摆弄自我修改功能并知道JavaScript有eval
和其他有趣的反射功能,比如让函数从内部打印它的身体,我想我想用JavaScript做一些自修改功能测试。
我希望有一个简单的函数,当被调用时,根据任何规则修改自己。
也许某些功能可以先做一个简单的console.log
,然后在下次调用时它会改为alert
。使用if
显然可以实现这一点,但我在这里寻找的是实际的物理函数应该首先看起来像这样:
function selfm()
{
console.log('hello')
// + modify self here somehow
}
第一次通话后:
function selfm()
{
alert('hello')
}
我如何以最简单的形式实现这种行为?
答案 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
还需要在不同的浏览器上进行测试。 :)