Явная привязка контекста
function greet() { return this.name; }
const obj = { name: 'Ada' };
greet.call(obj);
greet.apply(obj);
const bound = greet.bind(obj);
bound();
Другие способы
- метод объекта:
obj.greet();
Reflect.apply(fn, thisArg, args);
- в strict mode
this у «голого» вызова — undefined, не window.
Стрелки
У стрелочных функций свой this не бывает — берётся лексический. call/apply/bind контекст не меняют.
Итог
Нужен произвольный this → call / apply / bind или вызов как метод объекта.