我试图自定义现有的JS库,而不修改原始JS代码。这段代码将加载一些我可以访问的外部JS文件,而我想做的就是更改原始文件中包含的功能之一,而无需将整个内容复制并粘贴到第二个JS文件中。 因此,例如,禁区JS可能具有以下功能:
var someFunction = function(){ alert("done"); }
我希望能够以某种方式在该函数中追加或添加一些JS代码。原因主要是在原始的不可触摸的JS中,该功能非常庞大,如果该JS得到更新,则我用它覆盖的功能将过时。
我不确定这是否可行,但我想我会检查一下。
如果someFunction该功能全局可用,则可以缓存该功能,创建自己的功能,然后调用它。
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,并可以将传入的任何参数作为单个参数传递,而不管有多少个参数。
.apply
this