this - это первый аргумент при вызове связанной функции myFunc.bind(thisArg).

Роль .bind() заключается в создании новой функции, при вызове которой контекст будет первым аргументом, передаваемым в .bind(). Это мощная техника, позволяющий создавать функции с предопределенным значением this.

Давайте посмотрим, как задать this для связанной функции:

const numbers = {
  array: [3, 5, 10],
  getNumbers() {
    return this.array;
  }
};
// Создаем связанную функцию
const boundGetNumbers = numbers.getNumbers.bind(numbers);
boundGetNumbers();  // => [3, 5, 10]
// Отделяем метод от объекта
const simpleGetNumbers = numbers.getNumbers;
simpleGetNumbers();  // => undefined или ошибка в строгом режиме

numbers.getNumbers.bind(numbers) возвращает функцию boundGetNumbers, контекст которой привязан к numbers. Затем вызывается boundGetNumbers() с this равным numbers и возвращает правильный объект массива.

Функция numbers.getNumbers извлекается в переменную simpleGetNumbers без привязки. При последующем вызове функции simpleGetNumbers() контекст this будет равен window или undefined в строгом режиме, но не объект numbers (см. 3.2). В этом случае simpleGetNumbers() некорректно вернет массив.