Pregunta

Tengo una options objeto: options = {title : 'title1', name : 'name1', url : 'url1', etc.}

que se pasa como un parámetro para una función. Estoy tratando de pasar sobre ese objeto, pasarla a través de otra función evaluate, y almacenar el resultado en otra opts objeto, así:

var opts = new Object();

$.each(options, function(key,value){
opts.key = evaluate(element, value);
});

El evaluate(element,value) funciona bien, pero el problema es que opts termina pareciéndose a:

{key : eval(element,url1)}

en lugar de

{title : eval(element,title1), name : eval(element,name1), etc.}

Es decir, key se pasa literalmente, en lugar de ser evaluado, y se sobreescribe con cada iteración con la última propiedad en options.

¿Tengo la sintaxis correcta en mi línea de asignación? También probé:

opts = {key : eval(element,val)}

que dio el mismo resultado que anteriormente. I también puede convertir el objeto a una matriz dentro de la iteración $.each. He intentado varias maneras de hacerlo, también sin éxito. Si alguien me puede mostrar esa ruta, que sería grande también.

(Esto es para un plugin de jQuery, y yo estoy probando el uso de Firebug en Firefox).

Gracias de antemano por su ayuda.

¿Fue útil?

Solución

Como usted ha descubierto esta es la 'clave' clave literal:

opts.key = evaluate(element, value);

Para utilizar un uso [] dinámica de claves:

opts[key] = evaluate(element, value);

ejemplo específico:

var o = {};
o["test"] = "foo";
alert(o.test);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top