Вы можете использовать call или apply для выполнения функции с другим контекстом. Большинство функций JavaScript предназначены для обобщенных функций c, что означает, что они будут работать с большинством типов переменных.
String.prototype.repeat.call(1, 2); // -> "11"
String.prototype.repeat.call({}, 2); // -> "[object Object][object Object]"
Из-за этого устанавливается простая проверка, чтобы убедиться, что никто не пытается выполнить его в контексте null
или undefined
String.prototype.repeat.call(null, 2); // TypeError