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
, bind
y / ocall
connew
?