1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/HGJing-hooker-js

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 8.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 29.11.2024 02:36 1190891

Хукер JS

Внимание, Hooker JS из-за проблем с версиями и историческими кодами прекратил поддержку соответствующей версии этого репозитория кода.

Новая версия была переименована в @hook-js (https://github.com/canguser/hook-js-core): https://github.com/canguser/hook-js-core.

Используется для перехвата методов и выполнения аспектно-ориентированных операций (АОП) над целевыми объектами. Основан на синтаксисе ES5 для быстрого развития.


Быстрый старт

eHook.hookBefore(window,'alert',function(method,args){
	args[0] = args[0] + '[перехваченный параметр]';
});
alert('hello eHook'); // hello eHook[перехваченный параметр]

Глобальные объекты: eHook, aHook.

  • eHook: содержит основные методы перехвата АОП.
  • aHook: содержит базовые методы перехвата URL Ajax.

Методы внедрения

  1. Загрузите hooker.js или hooker-mini.js из каталога /build, затем импортируйте через <script>. Этот метод внедрения создаёт глобальные объекты: eHook и aHook.
  2. Импортируйте с помощью npm / yarn.
    npm i @palerock/hooker-js
    # или
    yarn add @palerock/hooker-js
    Затем импортируйте с помощью import или require.
    var hookJS = require('@palerock/hooker-js');
    var eHook = hookJS.eHook;
    var aHook = hookJS.aHook;
    // more...

API документация

Объект eHook

hookBefore(parent, methodName, before, context)

Выполняет код перед указанным методом.

parent: Тип: object, обязательно, указывает на объект, содержащий метод.

methodName: Тип: string, обязательно, имя метода.

before: Тип: function, обязательно, функция обратного вызова, которая выполняется перед указанным методом. Функция обратного вызова принимает следующие аргументы:

  • method: указанный метод.
  • args: параметры указанного метода (изменение параметров здесь повлияет на последующие вызовы указанного метода).

context:
Тип: object (необязательно), контекст функции обратного вызова.

Возвращаемое значение:
Тип: number, идентификатор перехвата (используется для отмены перехвата).


hookCurrent(parent, methodName, current, context)

Перехватывает выполнение метода и заменяет его на указанный.

Обратите внимание: этот метод может перехватить выполнение метода только один раз. Если вы попытаетесь использовать его снова, он заменит существующий перехват [можно использовать вместе с hookBefore и hookAfter, и они могут сосуществовать с несколькими перехватами одного и того же метода].

parent:
Тип: object, необходимо, объект, содержащий указанный метод.

methodName:
Тип: string, необходимо, имя указанного метода.

current:
Тип: function, необходимо, функция обратного вызова, выполняемая вместо указанного метода. Функция обратного вызова принимает следующие аргументы и возвращает значение:

  • parent: объект, содержащий указанный метод, тип: object.
  • method: указанный метод, тип: function.
  • args: аргументы указанного метода, тип: array.
  • Возвращаемое значение: возвращаемое значение указанного метода, тип: *.

context:
Тип: object (необязательно), контекст функции обратного вызова.

Возвращаемое значение:
Тип: number, идентификатор перехвата (используется для отмены перехвата).

Пример:

eHook.hookCurrent(Math, 'max', function (p, m, args) {
     return m.apply(Math, args) + 1;
});
console.log(Math.max(1, 8)); // 9

hookAfter(parent, methodName, after, context)

Выполняется после указанного метода.

parent:
Тип: object, необходимо, объект, содержащий указанный метод.

methodName:
Тип: string, необходимо, имя указанного метода.

after:
Тип: function, необходимо, функция обратного вызова, которая выполняется после указанного метода. Функция обратного вызова принимает следующие аргументы и возвращаемое значение:

  • method: указанный метод, тип: function.
  • args: аргументы указанного метода, тип: array.
  • result: возвращаемое значение указанного метода, тип: *.
  • Возвращаемое значение: указанное возвращаемое значение, тип: *.

context:
Тип: object (необязательно), контекст функции обратного вызова.

Возвращаемое значение:
Тип: number, идентификатор перехвата (используется для отмены перехвата).

Пример:

eHook.hookAfter(Math, 'max', function (m, args, result) {
     return result + 1;
});
console.log(Math.max(1,8)); // 9

hookReplace(parent, methodName, replace, context)

Заменяет указанный метод на новый.

Примечание: этот метод заменяет все существующие перехваты указанного метода и не может быть использован повторно. Также нельзя использовать одновременно с hookAfter, hookCurrent и hookBefore, при одновременном использовании приоритет имеет hookReplace.

parent:
Тип: object, необходимо, объект, содержащий указанный метод.

methodName:
Тип: string, необходимо, имя указанного метода.

replace:
Тип: function, необходимо, функция обратного вызова, возвращающая заменяемый метод. Функция обратного вызова принимает следующий аргумент и возвращаемое значение:

  • method: указанный метод, тип: function.
  • Возвращаемое значение: заменяемый метод, тип: function.

context:
Тип: object (необязательно), контекст функции обратного вызова.

Возвращаемое значение:
Тип: number, идентификатор перехвата (используется для отмены перехвата).

Пример:

eHook.hookReplace(Math,'max',function (m) {
     return Math.min;
});
console.log(Math.max(1, 8)); // 1

Связанные адреса

При возникновении вопросов, пожалуйста, оставьте комментарий или сообщение.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/HGJing-hooker-js.git
git@api.gitlife.ru:oschina-mirror/HGJing-hooker-js.git
oschina-mirror
HGJing-hooker-js
HGJing-hooker-js
master