Tema: Dos puntos
Ver Mensaje Individual
  #7 (permalink)  
Antiguo 06/10/2008, 00:05
Avatar de buzu
buzu
 
Fecha de Ingreso: octubre-2006
Ubicación: San Francisco, CA
Mensajes: 2.168
Antigüedad: 17 años, 6 meses
Puntos: 122
Respuesta: Dos puntos

En el ejemplo lo que en realidad estás instanciando es getInstance, un objeto creado con el constructor de objetos. De ahí a que el getInstance esté clonando un objeto pp, es otra cosa, pero fíjate que estas instanciado getInstance (a=new getInstance) y no pp en si. De modo que en realidad el objeto que es reusable es getInstance y no pp ya que al que en realidad puedes instanciar es a getInstance, pero no puedes decir new pp o si?

a = new getInstance(obj);//está linea crea una nueva instancia de getInstance.

var getInstance= function(obj){//crear el objeto getInstance
for(i in obj){//recorrer todos los métodos/propiedades del objeto pasado por parámetro
this[i]=obj[i];// asignar los métodos del objeto pasado por parametro
//como métodos de getInstance
//de modo que al final tenemos por ejemplo this.a = 'blabla'; donde this
//hace referencia a getInstance y no a pp.
}
}

a.b(123);// acceder al método b de a, instancia de getInstance y no de pp
getInstance.prototype.algo=function(j){alert(j);}//extender el prototipo de getInstance
//si estuviéramos extendiendo el prototipo de pp sería pp.prototype.algo

Como te digo, lo que estás haciendo es simular la herencia pero no creando una nueva instancia del objeto pp en si. Más bien extiendes el objeto getInstance al clonar o robar los métodos de pp. Si bien podrías llamar eso reusabilidad, es una reusabilidad muy limitada ya que para poder usarla tienes que clonar el primer objeto cuando en realidad bastaría con crear el objeto usando el constructor de objetos desde un principio. Al final el objeto que roba los métodos del primero objeto (pp en esté caso) termina siendo mas reusable, manejable y poderoso.
__________________
twitter: @imbuzu