あなたはこのようにすることができます:
arr = []
arr.push = function(data) {
alert(data); //callback
return Array.prototype.push.call(this, data);
}
電話がない状況にある場合は、次の解決策を選択することもできます。
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;
}
その方法を説明していますが、 pushをオーバーライドするのではなく、コールバックを実行して配列に対してpushを呼び出す別のメソッドを使用したほうがよい場合があります。予期しない副作用が発生する可能性があります。たとえば、pushはバラディック ( printfのように可変数の引数を取る) のように見え、上記を使用するとそれが壊れます。
この関数を適切にオーバーライドするには、_Arguments() と _ArgumentsLength() をいじる必要があります。このルートに反対することを強くお勧めします。
または、「引数」を使用することもできますが、それも機能します。ただし、このルートを使用しないことをお勧めします。