如何在Javascript中重写函数时减少冗余代码

How to reduce redundant codes when overwriting function in Javascript?

本文关键字:冗余 代码 函数 重写 Javascript      更新时间:2023-09-26

我必须在我的项目中覆盖一个函数。下面是original.js文件:

lib.func = function(a){
     //original logic
}

这是A.html我覆盖了func函数:

<script src='original.js'></script>
<script>
     var original = lib.func;
     lib.func = function(a){
         //overwrite to modify a
         a.replace(c, 'new');
         original(a);//call original function
     }
</script>

这是B.html,我将a替换为另一个字符串d:

<script src='original.js'></script>
<script>
     var original = lib.func;
     lib.func = function(a){
         //overwrite to modify a
         //***********Different replacement source********
         a.replace(d, 'new'); 
         original(a);//call original function
     }
</script>

我的问题是:有没有一种方法把这个覆盖逻辑在一个文件,我可以在a.htmlb.html使用它?

您可以将其添加到原始函数中,并传递一个字符串参数。您可以通过在字符串参数

上调用if来执行原始函数,而不需要额外的内容。
lib.func = function(a, b){
    if (b) a.replace(b, 'new');
    // original logic
}

这样,您可以在任何地方重用该方法,并根据需要动态选择替代方法。EDIT:只是为了清楚,如果你不传递第二个参数,那么方法将完全像以前一样执行,但是当你传递第二个参数时,if语句将捕获它并替换