0

我有一种方法可以完成手头更大任务的两个部分。基本上我有两个按钮一个按钮使用整个方法并在方法的底部返回一个结果。现在,我的问题是关于第二个按钮。第二个按钮需要以相同的方法完成所有操作,但只能从所述方法的第 x 行开始。与其编写第二个方法,从所述方法的第 x 行向下重复相同的确切代码,有没有一种方法可以跳过代码位并仅在 javascript 中执行方法的一部分?或者也许我在想这一切都错了?

4

3 回答 3

4

执行两个单独的方法,如下所示:

function a(){
//do first half of function
b();
}

function b(){
//do second half of function
}
于 2013-11-07T22:49:50.477 回答
1

2种方式,

  • 将使用两次的块拆分为一个单独的方法,然后从第一个方法中调用,或者直接从另一个上下文调用。

  • 向需要布尔值的方法添加另一个参数。然后,该函数根据传入的值跳过不需要的位。然后可以从不同的上下文中以不同的方式调用它。

于 2013-11-07T22:51:08.047 回答
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+')')如果您将 { 放在像我这样的函数参数之后或将 +'{'+ 放在small[0] 和 n 如果您将 { 放入新行。

它将返回新函数,仅包含行后代码。老兄,看看你会节省多少行代码......

说真的 - 这是矫枉过正。我正在使用像这样的动态代码操作来动态创建 webworkers,只使用来自主线程的部分代码,并在飞行中为它们制作 blob 和 url,以减少加载时间。但这比仅仅缩短代码更重要的目的,但是......

至少它会很专业 xD

于 2013-11-08T00:26:26.400 回答