Mam funkcji nie można zmodyfikować:Dodaj do funkcji javascript
function addToMe() { doStuff(); }
mogę dodać do tej funkcji? Oczywiście ta składnia jest bardzo źle, ale jest to ogólna idea ...
function addToMe() { addToMe() + doOtherStuff(); }
Mam funkcji nie można zmodyfikować:Dodaj do funkcji javascript
function addToMe() { doStuff(); }
mogę dodać do tej funkcji? Oczywiście ta składnia jest bardzo źle, ale jest to ogólna idea ...
function addToMe() { addToMe() + doOtherStuff(); }
Mogłeś przechowywać odniesienie do pierwotnej funkcji, a następnie zastąpić go z funkcji, która oddzwania oryginalny jednego i dodaje funkcjonalność chec:
var originalFn = addToMe;
addToMe = function() {
originalFn(); // call the original function
// other stuff
};
można to zrobić ponieważ JavaScript functions są first-class obiekty.
Edit: Jeśli funkcja przyjmuje argumenty, należy użyć apply przekazać je do pierwotnej funkcji:
addToMe = function() {
originalFn.apply(this, arguments); // preserve the arguments
// other stuff
};
Można również wykorzystać funkcję ekspresji automatycznego wykonywania z argumentem do przechowywania odniesienie do pierwotnej funkcji, myślę, że jest trochę czystsza:
addToMe = (function (originalFn) {
return function() {
originalFn.apply(originalFn, arguments); // call the original function
// other stuff
};
})(addToMe); // pass the reference of the original function
tak, to prawdopodobnie najprostsze rozwiązanie! – mauris
perfect :) too easy. –
dziękuję :) takie eleganckie rozwiązanie. – silkcom