В программировании термин перехват (hooking) охватывает ряд методов, используемых для изменения или дополнения поведения операционной системы, приложений или других программных компонентов путем перехвата вызовов функций, сообщений или событий, передаваемых между программными компонентами. Код, который обрабатывает подобные перехваченные вызовы функций, события или сообщения, называется перехватчиком (hook).
function emptyFunction() {}; function Interceptor(preInvoke, postInvoke) { var preInvoke = typeof preInvoke === 'function' ? preInvoke : emptyFunction, postInvoke = typeof postInvoke === 'function' ? postInvoke : emptyFunction; this.preInvoke = preInvoke; this.postInvoke = postInvoke; } Interceptor.prototype = { constructor: Interceptor, interceptInvokes: function (callback) { var self = this; return function () { var args = Array.prototype.slice.call(arguments, 0), result; self.preInvoke.call(self, callback, args); result = callback.apply(self, args); self.postInvoke.call(self, callback, args, result); return result; }; } } /*** Пример использования ***/ // Функция, вызов которой мы собираемся перехватить function test(value) { value = value + 100; return value; } // Настраиваем перехватчик вызова var logInterceptor = new Interceptor(function(callback, args) { console.log(args); // Покажем аргументы, перехваченного вызова }, null); test = logInterceptor.interceptInvokes(test); // Указываем фуекцию, которую хотим перехватить console.log(test(2016)); // Вызываем тестовую функцию
Внимание! Все действия, описанные выше, вы выполняете на свой страх и риск. Автор не несет никакой ответственности за любой вред, причиненный пользователю или третьим лицам в результате использования материалов, программного обеспечения и другой информации, размещенной на данной странице.
Полезно? Поддержите! Это мотивирует автора к дальнейшим публикациям.