Cuando hablo de construirla dinámicamente me refiero a que puedes construir el código en ejecución. Quiero decir, que podrías tener una situación en la que el código de la función lo tuvieras como texto o lo tuvieras que construir.
Imaginemos un momento que quieres tener una función que te devuelva otra función y según lo que le pases te devuelva una función que hace una cosa o una función que hace otra. Por ejemplo, algo como...
Código:
function dialogo(mensaje, confirm) {
var fun = "";
if(confirm) fun = "confirm('";
else fun = "alert('";
fun += mensaje + "');";
return new Function(fun);
}
var dialogoUno = dialogo("hola",false);
var dialogoDos = dialogo("hola",true);
Ahora bien, este ejemplo es poco más que eso. Un caso así en la vida real no lo harías así. La aplicación de esto, en la vida real, es escasa y en la gran mayoría de los casos no te vas a encontrar con ello nunca. Podrías encontrar algo así si haces parsers (por ejemplo un parser de fórmulas matemáticas) o cosas de ese estilo.
Lo normal es que no lo necesites.