1
JavaScriptIntermediate#functions#es6
call and apply invoke the function immediately with an explicit this — call takes arguments individually, apply takes them as an array. bind returns a new function with this (and optional arguments) permanently fixed.
function greet(a, b){ return `${this.name}${a}${b}`; }
greet.call({name:'X'}, '!', '?');
greet.apply({name:'X'}, ['!', '?']);
const g = greet.bind({name:'X'});
g('!', '?');