watchMe = []
doPush = (value)->
# do whatever
watchMe.push = ->
doPush arguments[0]
Array.prototype.push.apply @, arguments
# this will call doPush with 'foo', and add 'foo' to the watchMe array
watchMe.push 'foo'
Вы можете переопределить собственные Array.prototype
методы в вашем массиве, вызвав вашу пользовательскую функцию, а затем родительскую функцию родного javascript.
В приведенном выше примере показано, как переопределить добавление элементов с помощью push()
. Вы бы сделали то же самое для удаления элементов, используя pop()
, splice()
и т. Д.
Проверьте W3schools для получения подробного списка методов массива, которые вы можете перегрузить, используя метод выше.
Вот ссылка на более подробную демонстрацию coffeescript выше. Вы можете проверить локально или скопировать и вставить это на coffeescript.org