Sie könnten es so machen:
arr = []
arr.push = function(data) {
alert(data); //callback
return Array.prototype.push.call(this, data);
}
Wenn Sie sich in einer Situation befinden, in der Sie nicht angerufen werden können, können Sie sich auch für diese Lösung entscheiden:
arr.push = function(data) {
alert(data); //callback
//While unlikely, someone may be using "psh" to store something important
//So we save it.
var saved = this.psh;
this.psh = Array.prototype.push;
var ret = this.psh(data);
this.psh = saved;
return ret;
}
Während ich Ihnen erkläre, wie man es macht, sind Sie vielleicht besser bedient, wenn Sie eine andere Methode verwenden, die den Rückruf durchführt und dann einfach aufruft drücken. auf das Array anzuwenden, anstatt die drücken. . Es kann zu unerwarteten Nebenwirkungen kommen. Zum Beispiel, drücken. scheint varadisch zu sein (nimmt eine variable Anzahl von Argumenten an, wie printf ), und die Verwendung der oben genannten Methode würde das verhindern.
Sie müssten mit _Arguments() und _ArgumentsLength() herumspielen, um diese Funktion richtig zu überschreiben. Ich empfehle dringend gegen diese Route.
Oder Sie könnten "Argumente" verwenden, das würde auch funktionieren. Ich rate aber trotzdem davon ab, diesen Weg zu gehen.