После привязки функция не может быть снова связана
let x = function(v,t) { console.log(this.name, v, t);}
x('unbound', 'arg2'); // outputs [window.name unbound arg2]
x.bind({name:1}, 'one', 'arg2')(); // outputs [1 one arg2]
x.bind({name:2}, 'two', 'arg2')(); // outputs [2 two arg2]
x.bind({name:3}, 'three').bind({name:4}, 'four')(); // outputs [3 three four] rather than [4 four undefined]
Вы можете видеть, с последней функцией, three
привязан к первому аргументу, four
привязан ко второму аргументу, но this
остается какэто было с первым bind
Возможно, изучение результатов поможет
const fn = function (...args) { console.log (this.This, args.join(' ')); }
const fnBound1 = fn.bind({This: 1});
const fnBound2 = fn.bind({This: 2}, '2bound1');
const fnBound3 = fn.bind({This: 3}, '3bound1', '3bound2');
const fnBound4 = fnBound1.bind({This: 4}, '4bound1');
const fnBound5 = fnBound4.bind({This: 5}, '5bound1', '5bound2');
fnBound1('1arg1', '1arg2', '1arg3');
fnBound2('2arg1', '2arg2', '2arg3');
fnBound3('3arg1', '3arg2', '3arg3');
fnBound4('4arg1', '4arg2', '4arg3');
fnBound5('5arg1', '5arg2', '5arg3');