Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/04/2012, 21:08
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
Respuesta: Diferencias entre estos objetos.

buenas.
la diferencia principal radica en quién es su constructor. cierto que ambos son objetos, pero en cierta forma son de tipos distintos. el primero es un objeto de tipo a (nombre de la función o variable), y el segundo es un objeto genérico de Object. aún así, puede ser que la diferencia aún no se nota. para hacerte una idea, ¿de dónde el objeto obtiene el método toString aún este no siendo definido en el constructor? cuando invocas toString desde el objeto, javascript primero determina si ese identificador esta definido directamente en el objeto. si no lo encuentra, entonces busca en la cadena de prototipos que comienza desde el prototipo del constructor. si ahí no lo encuentra, entonces busca en el próximo nivel que vendria siendo el prototipo del constructor Object, y es ahí donde esta definido el método. en cambio, un objeto literal siempre es una instancia directa de Object y por ende tiene menos caminos que recorrer en la cadena. el funcionamiento final es el mismo, pero difiere un poco en el proceso interno. no es que sea bueno o malo, simplemente que se sacrifica ciertas características cuando no se necesita, o cuando se quiere programar en un patrón en particular.

nota: la cadena de prototipos puede ser mas larga y el último nivel siempre es el constructor Object. en ese ejemplo se demuestra dos niveles.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 28/04/2012 a las 21:18