У вас есть только два способа сохранения контекста: .bind () и функция стрелки.
Я провел некоторое исследование, как лучше, но оба имеют свои преимущества и недостатки. Я передал класс ES6 через Babel, и результат был интересным
Функция стрелки находится в конструкторе и создает функцию (метод) каждый раз, когда вы пытаетесь создать экземпляр класса.
В случае связывания. Метод находится в prototype и не создается для каждого экземпляра класса, но когда вы связываете функцию, он создает новый экземпляр функции prototype.
Я думаю, что разница между решениями довольно мала. Если вам нужно больше проверок с кодом и вы хотите понять, почему функция стрелки не теряет контекста -> ссылка