Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/03/2010, 18:12
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Constructores, y el uso del THIS

Forma fea tienen de crear un objeto nuevo (¿"new Object()" en vez de "{}"?) pero bueno, vaya uno a saber...

Lo que sucede en la línea 2 es que se crea una nueva función anónima con function(), y esa función anónima se asigna a cargadorContenidos, resultando en efecto igual a

Código Javascript:
Ver original
  1. function cargadorContenidos(...) { ... }
  2. net.CargadorContenidos = cargadorContenidos;

this se refiere a net.CargadorContenidos, es decir, a la función anónima que se creará. La idea luego es que los nuevos objetos "cargador" heredan las propiedades de este objeto función.

Este ejemplo utiliza una forma de herencia que no es la más apropiada en Javascript. Personalmente prefiero los prototipos, y seguir las recomendaciones de Douglas Crockford para conseguir herencia entre objetos, que es la forma "nativa" de javascript.

El ejemplo se puede modificar fácilmente para ser más entendible, el siguiente código es equivalente (aunque no funciona, requiere más cambios):

Código Javascript:
Ver original
  1. // función para herencia entre objetos
  2. if (typeof Object.create !== 'function') {
  3.   Object.create = function (o) {
  4.     function F() {}
  5.     F.prototype = o;
  6.     return new F();
  7.   };
  8. }
  9.  
  10. // se inicializan los objetos principales
  11. var net = {};
  12.  
  13. net.CargadorContenidos = {
  14.   url : null,
  15.   req : null,
  16.   onload : null,
  17.   onerror : null,
  18.  
  19.   cargaContenidoXML : function(url, funcion, funcionError) { ... },
  20.   onReadyState : function() { ... },
  21.   defaultError : function() { ... },
  22. }
  23.  
  24. // luego se lo puede llamar así
  25. var cargador = Object.create(net.CargadorContenidos)
  26. cargador.cargaContenidoXML(url, funcion, funcionError);