Q:

¿Cómo funciona este código?

Tengo una serie de dudas con este código:
String.prototype.times = function(count) {
  return count < 1 ? '' : new Array(count).join(this);
}

Lo que hace es duplicar un string las veces que se pida como por ejemplo:

String.prototype.times = function(count) {
  return count < 1 ? '' : new Array(count + 1).join(this);
}

var a = "Duplicame! ".times(4);

console.log(a);

Mis dudas son:

¿Por qué debe sumarle + 1?
¿Por qué join(this), si se supone que join es para determinar cómo va a unir el array en un string?
Esto devuelve un array con count valores, y según lo que sé, devolvería un array indefinido con count valores, entonces... ¿por
  qué me devuelve count strings, en vez de devolverme la cadena y el
  array retornado?

A:

Las respuestas a tus preguntas:

Le suma 1 porque el método join une los elementos del array con el valor pasado por argumento y devuelve una cadena resultante. Si quieres obtener como resultado la cadena pasada por argumento repetida N veces, el array sobre el cual el método join se ejecuta debe tener N+1 elementos para que pueda haber N huecos entre los elementos unidos con el valor del argumento (el cual quieres repetir N veces).
Por eso mismo. Como join es un método para unir en un string los elementos de un array usando como «pegamento» el argumento pasado a join, si el array tiene N+1 elementos, el pegamento para unirlos se usa N veces. Y si además los elementos del array no están definidos (undefined), significa que la cadena resultante sólo va a estar formada por el argumento pasado a join repetido N veces (el pegamento pegado N veces para unir N+1 elementos sin definir, es decir, unir nada). Creas un string formado sólo por el pegamento N veces.
La última pregunta no la entiendo muy bien, pero al ejecutar el código, el método times funciona correctamente: duplica la cadena sobre la que es llamada un número de veces.

