Pet*_*aig 21 javascript function
我有一个我无法修改的功能:
function addToMe() { doStuff(); }
Run Code Online (Sandbox Code Playgroud)
我可以添加这个功能吗?显然这种语法非常错误,但这是一般的想法......
function addToMe() { addToMe() + doOtherStuff(); }
Run Code Online (Sandbox Code Playgroud)
CMS*_*CMS 42
您可以存储对原始函数的引用,然后使用回调原始函数的函数覆盖它,并添加所需的功能:
var originalFn = addToMe;
addToMe = function () {
originalFn(); // call the original function
// other stuff
};
Run Code Online (Sandbox Code Playgroud)
编辑:如果您的函数接收参数,您应该使用apply将它们传递给原始函数:
addToMe = function () {
originalFn.apply(this, arguments); // preserve the arguments
// other stuff
};
Run Code Online (Sandbox Code Playgroud)
您还可以使用带参数的自动执行函数表达式来存储原始函数的引用,我认为它有点清晰:
addToMe = (function (originalFn) {
return function () {
originalFn.apply(originalFn, arguments); // call the original function
// other stuff
};
})(addToMe); // pass the reference of the original function
Run Code Online (Sandbox Code Playgroud)