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