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

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

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

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

我不完全确定这是可能的,但我想我会检查一下。


答案 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;
    };
})();

这是小提琴


请注意,我用于调用缓存的函数。这让我可以保留 的预期值,并将作为单个参数传入的任何参数传递,而不管有多少个参数。.applythis


答案 2

首先将实际函数存储在变量中。

var oldFunction = someFunction;

然后定义你自己的:

someFunction = function(){
  // do something before
  oldFunction();
  // do something after
};