Ver Mensaje Individual
  #6  
Antiguo 04-02-2008
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Reputación: 22
keyboy Va por buen camino
Cita:
Empezado por lucasarts_18
me gustaría saber que diablos es obj (no se de donde sale y que representa)
No estoy seguro de entender cuál es la duda. obj es el nombre del parámetro y es totalmente arbitrario, nosotros lo escogemos al declarar la función. Igualmente pudimos usar objeto, param, parametro, etc. La única restricción es que ese mismo nombre lo usemos en el cuerpo de la función.

Tengo la impresión- aunque puedo equivocarme, desde luego -que la confusión viene de otra parte, y es que hay elementos que quizá no estén del todo claros.

Lo primero que hay que tener en cuenta es que en javascript se pueden crear objetos al vuelo, sin necesidad de un constructor. Por ejemplo, cuado ponemos

Código:
options =
{
  script: 'test.php',
  varname: 'input'
}
estamos creando un objeto "anónimo" que tiene dos propiedades: script y varname.

Otra cosa a saber, es que podemos asignar una función a una variable y usar dicha variable para invocar la función. Por ejemplo:

Código:
// declaramos una función
function saludar(mensaje)
{
  alert(mensaje);
}

// asignamos la función a una variable
s = saludar;

// invocamos la función a través de la variable:
s('hola mundo');
Pero, más interesante aún, es que podemos asignar a la variable directamente la implementación de la función:

Código:
// asignamos la función a una variable
s = function saludar(mensaje)
     {
       alert(mensaje);
     }

// invocamos la función através de la variable:
s('hola mundo');
sin tener que declararla previamente.

Pero no sólo a variables. También podemos asignar funciones a propiedades de un objeto, y ésta es- de hecho -la forma en que se crean métodos en javascript.

Así pues, cuando ponemos:

Código:
options =
{
  script: 'test.php',
  varname: 'input',
  callback: function(obj)
  {
    alert(obj.id);
  }
}
estamos creando un objeto con dos propiedades: script y varname, y un método, callback. El control AutoSuggest es quien internamente invoca a este método, pasándole como parámetro el objeto JS que corresponda a la opción seleccionada.

Tendría que examinar a detalle el código fuente del control para saber qué es exactamente lo que hace, pero bien puede ser algo similar esto:

El constructor:

Código:
function AutoSuggest(nombre, options)
{
  this.nombre = nombre;
  this.script = options.script;
  this.varname = options.varname;
  this.callback = options.callback;

  ...
}
Cuando escribimos algo en el control de edición asociado, el control AutoSuggest manda llamar al script que le indicamos para obtener elementos coincidentes. Dicho script regresa una lista en el formato que ya sabes. El AutoSuggest seguramente hace un "parsing" de esa lista y construye un objeto por cada elemento, por ejemplo:

Código:
this.results = Array();

this.results[0] =
{
  id: 1,
  info: '',
  value: 'Bastian'
}

this.results[1] =
{
  id: 2,
  info: '',
  value: 'Bartolomeo'
}

this.results[2] =
{
  id: 3,
  info: '',
  value: 'Castillo'
}
Cuando el usuario selecciona un elemento, el control determina a qué elemento de esta lista corresponde y ha de hacer algo como:

Código:
// si se asignó un callback...
if (this.callback)
{
  // ...invocarlo pasándole el objeto seleccionado como parámetro.
  this.callback(this.results[i]);
}
this.results[i] pasa a ser, entonces, el obj al que se refiere el cuerpo de la función.

Bye

Última edición por keyboy fecha: 04-02-2008 a las 21:50:51.
Responder Con Cita