我如何从函数名称中评估javascript函数以覆盖它?

时间:2016-12-23 16:31:40

标签: javascript

我在script1中有一个函数:

function myFunction(arg){
--code JS--
};

在script2中,我想覆盖这个函数:

var func_name = "myFunction";

如何从函数名中获取此函数的主体以覆盖它?

提前致谢

3 个答案:

答案 0 :(得分:0)

var func_name = myFunction; // without the quotes 

答案 1 :(得分:0)

我不确定你想要做什么。但你问“如何从函数名中获取此函数的主体以覆盖它?”这只是.toString(),如myFunction.toString()这将返回整个函数,包括'function(){}`外部块。要获得身体,请使用正则表达式:

function.toString().replace(/^function\ (?:\w|\d)*\([^\)]*\)\ ?\{\ *|\ *\}$/g,"")

但要覆盖该功能,您可以重新分配它:

> function ab(){ return 1+2 }
< undefined
> ab()
< 3
> ab = function() { return 3+4 }
< function () { return 3+4 }
> ab()
< 7

答案 2 :(得分:0)

如果您想使用相同的名称但更改功能,请改用匿名函数:

var myFunction = function() {
    // initial code
}

将新功能重新分配给同一个变量:

myFunction = function() {
   // new code
}

将其称为普通功能:myFunction()