我必须覆盖项目中的一个函数。
这是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.html
和b.html
中使用它?
答案 0 :(得分:0)
您可以将其添加到原始函数,并传递字符串参数。您可以通过调用字符串参数
上的if
来执行原始函数而无需额外的操作
lib.func = function(a, b){
if (b) a.replace(b, 'new');
// original logic
}
这样,您可以在任何地方重复使用该方法,并根据需要动态选择替换方法。 编辑:为了清楚,如果你没有传递第二个参数,那么该方法将完全像以前一样执行,但是当你传递第二个参数时,if语句将捕获它并且取代