Получить прокси-функцию BX24.proxy
Выберите инструмент для разработки с AI-агентом:
- используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
- используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации
BX24.proxy(func: callable, thisObject: object): callable;
Метод BX24.proxy создает прокси-функцию. Прокси-функция вызывает func, и внутри func значение this указывает на объект thisObject. Это нужно, когда метод объекта назначают обработчиком события: без прокси this в обработчике укажет на элемент страницы, а не на объект.
По назначению метод похож на Function.prototype.bind, но для одной и той же пары func и thisObject всегда возвращает одну и ту же функцию. Поэтому обработчик, назначенный через прокси, можно снять: BX24.unbind получит ту же функцию, что и BX24.bind.
Метод работает на странице приложения, где подключена библиотека BX24.js, и не обращается к Битрикс24, поэтому ждать BX24.init не нужно. Собственный scope методу не нужен.
Параметры метода
Обязательные параметры отмечены *
|
Название |
Описание |
|
func* |
Исходная функция: объявленная через |
|
thisObject* |
Объект, на который будет указывать |
Пример кода
Как использовать примеры в документации
Назначить метод объекта обработчиком кнопки, а после третьего нажатия снять его:
<button id="counter">Нажать</button>
<script>
BX24.ready(function () {
const counter = {
clicks: 0,
onClick: function () {
this.clicks++;
console.log('Нажатий:', this.clicks);
if (this.clicks === 3) {
BX24.unbind(button, 'click', BX24.proxy(this.onClick, this));
}
}
};
const button = document.getElementById('counter');
BX24.bind(button, 'click', BX24.proxy(counter.onClick, counter));
});
</script>
Обработка ответа
Метод синхронно возвращает результат типа function. Прокси-функция передает в func все свои параметры и возвращает ее результат.
Возвращаемые данные
|
Название |
Описание |
|
result |
Прокси-функция, которая вызывает |
Повторный вызов с той же парой func и thisObject вернет ту же функцию:
const counter = { onClick: function () {} };
BX24.proxy(counter.onClick, counter) === BX24.proxy(counter.onClick, counter); // true
Обработка ошибок
Кодов ошибок метод не возвращает.
|
Ситуация |
Что происходит |
Что делать |
|
|
Метод возвращает |
Передать оба параметра |
|
В |
Метод выбрасывает исключение |
Передать функцию |
|
В |
Метод возвращает прокси-функцию, но при ее вызове возникает исключение |
Передать функцию |
|
В |
Метод выбрасывает исключение |
Передать объект |
|
|
Метод возвращает прокси-функцию родительского объекта: |
Передавать объект, созданный без наследования от уже переданного |
|
|
Метод выбрасывает исключение |
Передать обычный объект и функцию |
|
Внутри |
Исключение выходит из прокси-функции наружу. После этого BX24.proxyContext может возвращать контекст прерванного вызова |
Перехватывать исключения внутри |