小编典典

以编程方式将代码添加到javascript函数

javascript

我试图自定义现有的JS库,而不修改原始JS代码。这段代码将加载一些我可以访问的外部JS文件,而我想做的就是更改原始文件中包含的功能之一,而无需将整个内容复制并粘贴到第二个JS文件中。
因此,例如,禁区JS可能具有以下功能:

var someFunction = function(){
    alert("done");
}

我希望能够以某种方式在该函数中追加或添加一些JS代码。原因主要是在原始的不可触摸的JS中,该功能非常庞大,如果该JS得到更新,则我用它覆盖的功能将过时。

我不确定这是否可行,但我想我会检查一下。


阅读 288

收藏
2020-05-01

共1个答案

小编典典

如果someFunction该功能全局可用,则可以缓存该功能,创建自己的功能,然后调用它。

所以如果这是原始的…

someFunction = function() {
    alert("done");
}

你会做的…

someFunction = (function() {
    var cached_function = someFunction;

    return function() {
        // your code

        var result = cached_function.apply(this, arguments); // use .apply() to call it

        // more of your code

        return result;
    };
})();

注意,我使用了.apply来调用缓存的函数。这使我可以保留的期望值this,并可以将传入的任何参数作为单个参数传递,而不管有多少个参数。

2020-05-01