Функция bind создает новую функцию с тем же телом функции, что и вызываемая функция. Она вызывается с аргументом this. Почему мы используем связывание fun. : когда каждый раз создается новый экземпляр и нам нужно использовать первый начальный экземпляр, мы используем привязку fun. Мы не можем переопределить привязку fun. просто она хранит начальный объект класса.
setInterval(this.animate_to.bind(this), 1000/this.difference);