Проблема в том, что свойство call
любой функции эквивалентно Function.prototype.call
, которое не может быть вызвано само по себе без контекста вызова:
console.log(Number.prototype.toLocaleString.call === Function.prototype.call);
Решение состоит в том, чтобы явно дать вновь созданной функции контекст вызова исходной функции, что можно сделать с помощью bind
:
const f = Number.prototype.toLocaleString.call.bind(Number.prototype.toLocaleString);
console.log(f(3333));