我有一种方法可以完成手头更大任务的两个部分。基本上我有两个按钮,一个按钮使用整个方法,并在方法的底部返回一个结果。现在,我的问题是关于第二个按钮。第二个按钮需要在同一方法中完成所有操作,但只能从所述方法的第x行开始。而不是编写第二种方法,从所述方法的第x行向下重复相同的精确代码,有没有办法跳过代码的比特,只在javascript中执行方法的一部分?或许我在想这一切都错了?
答案 0 :(得分:4)
这样做两个不同的方法:
function a(){
//do first half of function
b();
}
function b(){
//do second half of function
}
答案 1 :(得分:1)
2种方式,
将两次使用的块拆分为一个单独的方法,并从第一个方法或直接从其他上下文中调用。
为需要布尔值的方法添加另一个参数。然后,该函数根据传入的值跳过不需要的位。然后可以从不同的上下文中以不同的方式调用它。
答案 2 :(得分:0)
你可以调用String(yourfunc)来获取代码,然后通过仅剪切更多行来动态创建第二个函数,你可以通过('\ n')拆分来获取数组,然后从你想要开始的地方连接数组元素并评估新功能,代码:
function split(bigfunc,line){
for(var small = String(bigfunc).split('\n'), i=line,n='',l=small.length;++i<l;)
n+=small[i];
return eval('(function(args){'+n+')'};
}
你需要用原始函数中的args替换最后一行中的args,最终你可以假设args是相同的,然后用以下代码替换:
return eval('('+small[0]+n+')')
如果你正在{在像我这样的函数的参数之后,或者在小[0]和n之间放+'{'+,如果你把{放在新行中。
它将返回只有代码后的新函数。 老兄,看看你会节省多少行代码......
要认真 - 这太过分了。我正在使用这样的动态代码操作来动态创建webworkers,只使用来自主线程的部分代码并在飞行中制作blob和url以减少加载时间。但这比仅仅使代码缩短更为严肃,但是......
至少它会如此专业xD