Вы можете сделать это так:
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;
}
Edit:
В то время как я говорю вам, как это сделать, вам лучше использовать другой метод, который выполняет обратный вызов, а не просто переопределяет push-вызов массива. Вы можете получить неожиданные побочные эффекты. Например, push выглядит как случайный (принимает переменное количество аргументов, например printf), и использование вышеперечисленного могло бы его сломать.
Вам нужно было бы возиться с _Arguments () и _ArgumentsLength (), чтобы правильно переопределить эту функцию. Я настоятельно рекомендую против этого маршрута.
Редактировать еще раз:
Или вы могли бы использовать «аргументы», это тоже сработало бы. Тем не менее, советую не идти по этому маршруту.