2016-07-13 8 views

Antwort

3

ohne Bearbeitung des Objekts?

Wenn Sie meinen, ohne das Objekt zu ändern, können Sie nicht. Wenn Sie meinen, ohne den Quellcode des Objekts zu bearbeiten, können Sie Funktionalität am Anfang und/oder am Ende hinzufügen, aber nicht in der Mitte.

(function() { 
    var original = obj.l; 
    obj.l = function() { 
     var retval; 

     // You can do something here 

     // Call the original 
     retVal = original.apply(this, arguments); 

     // You can do something here 

     // Return result 
     return retVal; 
    }; 
})(); 

Die Scoping-Funktion ist nur zu vermeiden original, die einem anderen Code zu machen.

Dieses Beispiel des Aufrufs des Originals wird es mit der gleichen this und Liste der Argumente aufrufen, mit denen Ihr Wrapper aufgerufen wurde. Sie können natürlich auch andere Argumente übergeben, vielleicht über Function#call anstelle von Function#apply.

+0

könnte man einen Verschluss für die 'obj.l' verwenden –

+1

@NinaScholz: Nun, der Code wird wahrscheinlich in einer Schließung sein. :-) Aber ja, ein All-in-One ist möglich. (Ich habe eine langweilige Scoping-Funktion anstelle eines All-in-One hinzugefügt.) –

Verwandte Themen