Variables con nombre dinámico en Javascript
3 seguidores
Buenas,
Hace un tiempo había un post sobre variables dinámicas en javascript y como definirlas.
Se que se puede con evals, con window[] y tal pero nose cual es la forma más correcta o menos mala. :?
zigotica
pues nada, ya me voy botando ;)
ozke
zigotica
ya, pero yo no lo probé, asumo que tu tampoco, y hemos estado aqui dando vueltas a algo que ya funcionaba :P
Jajaja, a ver, el caso es q a mi ya m iva así, y con eval tb... pero era hablar por hablar con el fin de descubrir como "es correcto" hacerlo.
Aún asi me ayudó tu funcion de javascript para googlemaps, es lo más tonto del mundo pero ni había pensado ese día de encebollado q iva.
En fin, sea como sea es un placer siempre poder discutir con gente tan wena :) (boing, boing)
zigotica
ya, pero yo no lo probé, asumo que tu tampoco, y hemos estado aqui dando vueltas a algo que ya funcionaba :P
ozke
zigotica
for the record:
<code>var a = "tomat";
var b = "e"
window[a+b] = 3;
alert(tomate); </code>
Eso era lo q decía al principio del post :D
txuma... eval es una forma de interpretar lo escrito...
http://www.desarrolloweb.com/faq/332.php
txuma Plus
zigotica
... hay que tirar de eval.
ese gran método que tanta importancia debe tener y que nunca he terminado de comprender correctamente...
zigotica
for the record:
<code>var a = "tomat";
var b = "e"
window[a+b] = 3;
alert(tomate); </code>
ozke
Bueno, realmente no lo necesitaba para nada, era x si un día me hacía falta no volverme loco. Con eval es facil pero me parecía hiperguarro.
En fin, tu tranquilo q para cosas como la tonterieta de google maps no usaré las guarrivariables :)
Gracias por todo como siempre sergi :D
zigotica
sinceramente, yo intentaria evitar ese tipo de variables. si realmente te hacen falta hay que tirar de eval.
ozke
La referenciación si me queda clara, pero mi duda es muchísimo más tonta.
Cómo hago... q la variable tomate tenga el valor 3.
var a="tomat";
var b="e";
window[a+b] = 3;
o algo asi?
Quien me diga tomate=3 me lo cargo, es solo un ejemplo inútil para declarar el nombre de las variables de forma dinámica. xDDD
zigotica
bueno, siempre puedes referenciar la variable, no veo el problema (aparte de recursos, claro). Para clases, una solucion que se usa para arrastrar las referencias al objeto es declarar unan variable intermedia en las closures para referenciar al this de ese nivel:
var me = this;
me.methodA ...
no se si me he explicado o no es lo que preguntabas.
ozke
El problema del scope no lo resuelvo pq la variable map está fuera y no tengo más remedio que referenciarla.
De todas maneras, más q algo de google maps (q solo es la excusa) la gracia era saber el tema de la variable dinamica, o mejor dicho, la variable cuyo nombre es dinámico.
zigotica
de todas maneras creo que hay ejemplos en la documentacion para añadir multiples puntos y para añadir paths, arrays de puntos, etc.
zigotica
no lo he probado, pero en teoria lo metes en una funcion padre y listos, así estarán en un scope privado (dentro de la funcion):
<code>function createPoints(X,Y,map)
{
var point = new GPoint(X,Y);
var mark = new GMarker(point);
map.addOverlay(mark);
GEvent.addListener(mark, "click", function() {
mark.openInfoWindowHtml("<b>test</b>");
});
}
</code>
le tendrás que pasar las coordenadas y la referencia del mapa donde pintarse.
ya me dirás que tal
ozke
Bueno, estoy trasteando el google maps...
<code>var point2 = new GPoint(X,Y);
var mark2 = new GMarker(point2);
map.addOverlay(mark2);
GEvent.addListener(mark2, "click", function() {
mark2.openInfoWindowHtml("<b>test</b>");
});</code>
Quiero evitar repetir este trozo de código a cada punto q meta en el mapa :P
Básicamente es lo q en as se hace this["punto"+i] o en php con el doble $$ o creo q en js es window[] pero me picaba la curiosidad de saber como se hace bien bien :P
zigotica
expliquese un poco mas, y trate de evitar el eval ;)