new Array(times+1)
возвращает пустой массив, который в вашем случае будет длиной 4. То-есть грубо говоря он должен 4 переменных содержать, но их нет.
join(this)
соединяет массив в строку с указанием разделителя. То-есть у вас 4 пустых переменных в строку соединяется между собой тремя
ля
. Пример:
['Первый', 'Второй', 'Третий', 'Четвертый'].join('-') // Получим 'Первый-Второй-Третий-Четвертый'
f.call(value, prop, value); // вызовет f(prop, value), this=value
А как ещё должно быть? Первый аргумент это контекст, то-есть
this
. Остальные аргументы идут в функцию.