Получить прокси-функцию 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*
callable

Исходная функция: объявленная через function или как метод объекта. У стрелочной функции и функции, привязанной через Function.prototype.bind, this не подменяется

thisObject*
object

Объект, на который будет указывать this внутри func

Пример кода

Как использовать примеры в документации

Назначить метод объекта обработчиком кнопки, а после третьего нажатия снять его:

<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
function

Прокси-функция, которая вызывает func с this, равным thisObject

Повторный вызов с той же парой func и thisObject вернет ту же функцию:

const counter = { onClick: function () {} };

BX24.proxy(counter.onClick, counter) === BX24.proxy(counter.onClick, counter); // true

Обработка ошибок

Кодов ошибок метод не возвращает.

Ситуация

Что происходит

Что делать

thisObject или func не передан или равен null, 0, false либо пустой строке

Метод возвращает func как есть, без прокси

Передать оба параметра

В func передана непустая строка

Метод выбрасывает исключение TypeError

Передать функцию

В func передан объект, а не функция

Метод возвращает прокси-функцию, но при ее вызове возникает исключение TypeError

Передать функцию

В thisObject передан не объект, например строка 'text' или число 5

Метод выбрасывает исключение TypeError

Передать объект

thisObject унаследован через Object.create от объекта, с которым метод уже вызывали для той же func

Метод возвращает прокси-функцию родительского объекта: this внутри func указывает на родителя, ошибки нет

Передавать объект, созданный без наследования от уже переданного

func или thisObject впервые передан в метод нерасширяемым — после Object.freeze, Object.seal или Object.preventExtensions

Метод выбрасывает исключение TypeError: библиотеке не удается записать в них служебное свойство

Передать обычный объект и функцию

Внутри func возникло исключение

Исключение выходит из прокси-функции наружу. После этого BX24.proxyContext может возвращать контекст прерванного вызова

Перехватывать исключения внутри func

Продолжите изучение