Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/03/2011, 22:28
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
constructor Date y método apply

¡que tal, comunidad!

el tema trata sobre un problema que me realice desde hace muchos años pero en su momento no encontre la solución. hace un par de semanas ayudaba a un miembro y me acorde busque información e intente varias cosas pero sin éxito. esta vez lo comparto para dos propósitos: determinar si existe una solución y para que no se me vuelva olvidar el tema.

¡al grano! he intentado buscar la manera de poder invocar el constructor Date a través de apply. la idea es que se le pueda pasar un número de argumentos variable. un ejemplo de su uso sería que a partir de una cadena se pueda dividir los componentes en un array y pasar éste como un número de argumentos arbitrario a Date en lugar de invocar Date indicando cada indice del array. el siguiente código demuestra la teoría pero resulta que no produce el resultado esperado.
Código:
// marzo 5, 2011 ;
var array = [2011, 2, 5];

var foo = Date.apply(null, array);
// devuelve la fecha actual independientemente de cuantos argumentos se provee ;
// esto porque el constructor no se ha invocado con el keyword new ;

var bar = new Date.apply(null, array);
// produce error del tipo TypeError debido a que apply no es un constructor ;
las propuestas que encontre por internet -ahora mismo no encuentro el enlace- era crear su propia función donde determina el número de argumentos y a través de un switch invocar Date. esa alternativa, aunque funciona, no me gusta pues quería hacerlo más prolijo sin tener que abundar en mucho código o creación de funciones. adicionalmente, no utilizo el método Date.parse porque el formato que éste utiliza no esta estandarizado y es dependiente de cada implementación de javascript. aca un tema donde explico un ejemplo que no funciona en todos los navegadores, http://www.forosdelweb.com/showthread.php?p=3761056.

entonces la pregunta es, ¿alguien tiene alguna idea de como lograr algo parecido a la linea que produce el error TypeError? cualquier comentario es bienvenido...


offtopic: después de tanto tiempo en compartir, creo que será la primera vez que pido ayuda en javascript. ¿debería alegrarme?
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.