我在script1中有一个函数:
function myFunction(arg){
--code JS--
};
在script2中,我想覆盖这个函数:
var func_name = "myFunction";
如何从函数名中获取此函数的主体以覆盖它?
提前致谢
答案 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()