.bind() создает постоянную контекстную ссылку и всегда будет ее сохранять. Связанная функция не может изменить свой связанный контекст при использовании .call() или .apply() с другим контекстом и даже повторное связывание не возымеет никакого эффекта.

Только вызов конструктора связанной функции может изменить уже связанный контекст; однако так обычно не делают (при вызове конструктора должны использоваться обычные, несвязанные функции).

В следующем примере создается связанная функция, а затем делается попытка изменить ее уже предопределенный контекст:

function getThis() {
  'use strict';
  return this;
}
const one = getThis.bind(1);
one();  // => 1
one.call(2);  // => 1
one.apply(2);  // => 1
one.bind(2)();  // => 1
new one();  // => Object

Только new one() изменяет контекст связанной функции. В других типах вызовов this всегда будет 1.