vinculación / aplicación de constructores en JavaScript

Estaba buscando soluciones para llamar a los constructores de Javascript con un número arbitrario de argumentos, y encontré algunas buenas publicaciones de SO, lo que me llevó a creer que estas tres llamadas deberían funcionar de la misma manera. Sin embargo, al menos en rhino y node.js, no:

1. f = Date.bind(Date, 2000,0,1)
2. g = Date.bind.call(Date, 2000, 0, 1)
3. h = Date.bind.apply(Date, [2000, 0, 1])

El primero tiene el resultado deseado:

print(new f()) //=> Sat Jan 01 2000 00:00:00 GMT-0500 (EST)

Pero los otros dos no lo hacen:

print(new g()) //=> Thu Feb 01 1900 00:00:00 GMT-0500 (EST)
print(new h()) //=> Wed Jun 01 1904 00:00:00 GMT-0400 (EST)

Así que algo se ha vuelto loco en alguna parte. ¿Pensamientos sobre qué? ¿Es solo una mala idea mezclar cosas comoapply, bindy / ocall connew?

Respuestas a la pregunta(2)

Su respuesta a la pregunta