在Javascript中覆盖函数时如何减少冗余代码?

时间:2015-10-19 06:25:02

标签: javascript

我必须覆盖项目中的一个函数。 这是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我用{strong>另一个字符串d 替换a

<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中使用它?

1 个答案:

答案 0 :(得分:0)

您可以将其添加到原始函数,并传递字符串参数。您可以通过调用字符串参数

上的if来执行原始函数而无需额外的操作
lib.func = function(a, b){
    if (b) a.replace(b, 'new');
    // original logic
}

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