Foros del Web » Programando para Internet » Javascript »

Diferencias entre estos objetos.

Estas en el tema de Diferencias entre estos objetos. en el foro de Javascript en Foros del Web. Hola a todos, probablemente esta sea una pregunta un poco tonta pero me lleva rondando la cabeza unos dias. Que diferencias hay realmente entre esto: ...
  #1 (permalink)  
Antiguo 28/04/2012, 20:46
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 14 años, 5 meses
Puntos: 34
Diferencias entre estos objetos.

Hola a todos, probablemente esta sea una pregunta un poco tonta pero me lleva rondando la cabeza unos dias.

Que diferencias hay realmente entre esto:
Código Javascript:
Ver original
  1. var a = function() {
  2. this.on function(){console.log(1)};
  3. }
y esto:
Código Javascript:
Ver original
  1. var a = {
  2. on: function() {console.log(1);}
  3. }

Porque se supone que los dos son objetos, pero el primero hay que instanciarlo y el segundo no.

Un saludo y gracias :)
  #2 (permalink)  
Antiguo 28/04/2012, 21:08
Avatar de 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
  #3 (permalink)  
Antiguo 29/04/2012, 11:33
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 14 años, 5 meses
Puntos: 34
Respuesta: Diferencias entre estos objetos.

Entonces la cadena hasta los metodos del constructor Object es mas corta en el segundo caso, y mas larga en el primero que hay que instanciarlo, verdad?

[Edito] Buscando mas sobre el tema llegue a esta pagina que explica bastante bien la notacion literal y la notacion del constructor: http://theproc.es/2011/2/18/13881/ja...ceptos-basicos

Última edición por mariomon17; 29/04/2012 a las 13:03

Etiquetas: diferencias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:45.