Ver Mensaje Individual
  #10 (permalink)  
Antiguo 03/03/2010, 14:30
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Constructores, y el uso del THIS

Respondiendo al mensaje 5:
objeto1.prototype es un enlace al objeto padre de objeto1, y es el objeto del cual hereda un objeto creado via "new objeto1()"
Si se añaden propiedades a objeto1, solamente objeto1 las tendrá. Si añades propiedades a objeto1.prototype, estarán disponibles para los objetos que desciendan de objeto1.
Relee el enlace que te pasé sobre herencia con prototipos (es una traducción mala, pero servirá) para más detalles. Te recomiendo utilizar la función object.create() definida allí y olvidarte del asunto: crea tus objetos con las propiedades que necesites, y usa object.create() para crear objetos que descienden de ellos.

Con respecto al mensaje 9:
Sí, ambas formas son equivalentes. Una diferencia es que usar
Código Javascript:
Ver original
  1. function objetoNuevo () {..}
crea una variable global, un objeto función de nombre "func1". Mientras que haciéndolo de la otra forma podés controlar el ámbito de la variable a crear, no tiene por qué ser global y, como en el ejemplo, podés crearla como propiedad de un objeto:
Código Javascript:
Ver original
  1. miobjeto.objetoNuevo = function () {...}

Si tenés que crear objetos, a menos que tengas una razón real para usar function(), usa la sintaxis literal:

Código Javascript:
Ver original
  1. var objeto = {};
  2. objeto.cualquiercosa = "algo";

o

Código Javascript:
Ver original
  1. var objeto = {
  2.     cualquiercosa : "algo"
  3. };

No hay necesidad de crear una función o llamar a "new Object()"

En definitiva, tu último comentario es correcto. Aunque como ves, es más difícil intentar emular el modelo clásico de herencia que hacerlo naturalmente con prototipos (si no me crees, nada más fíjate de nuevo en mi primer mensaje).


Saludos.