objetos javaScript

Lunes, 16 d marzo d 2009.

Reemplazar partes de funciones javascript

Hemos visto como Reescribir funciones en javascript pero a veces reescribir una función entera no es lo más adecuado. Actualmente me encuentro con la necesidad de alterar ciertas partes de funciones enormes que son llamadas como servicios web con sus variables y sesiones. En definitiva, que esas funciones ni siquiera son siempre iguales para cada usuario que las carga.

Para solucionar estos problemas he creado una función que es capaz de reemplazar parte de los textos de las funciones sin alterar el resto de la definición. Dejo aquí el código:

[...]

¿Te interesa? Sigue leyendo...

1 Comentario, leeló

Temas Relacionados: jquery

Autor:

Lunes, 16 d marzo d 2009.

Reescribir funciones en javascript

Una de las cosas que me gustan de javascript es que casi todo acaba definido como variable. Para grandes desarrollos es un engorro pero para lo que solemos usarlo va realmente bien. Las funciones no son una excepción a esta característica y son siempre accesibles como variables, así que al ser variables pueden ser redefinidas.

Imaginemos que tenemos esta inutil funcion bien definida en una libreria que no podemos editar:

function showMe ( variable )
{ 
	document.write( variable );
}

Y queremos que en vez de hacer un document.write empiece a mostrar datos con un alert. La forma más segura de conseguirlo es redefiniendo la función en lenguaje literal:

[...]

¿Te interesa? Sigue leyendo...

Comenta este artículo

Temas Relacionados: jquery

Autor:

Domingo, 22 d febrero d 2009.

usar funciones javaScript

Por lo general, en la mayor parte de los manuales se indica que las funciones en javaScript deben definirse en el formato clásico:

function miFuncion ( variable1, variable2) {
   // Código
}

Sin embargo las funciones en javaScript son mucho más versatiles y permiten ser definidas en cualquier momento, incluso (y esta es la parte brillante) como variables y en los mismos ámbitos que las variables...

var miFuncion = function ( variable1, variable2) {
   // Código
}

¿Por qué es tan importante esta modalidad para declarar las funciones? Básicamente, porque nos permite entender las funciones como procesos que podemos definir y redefinir en cualquier momento según nuestras necesidades. Seguidamente mostraré unos cuantos ejemplos de como sacar partido a estas carácteristicas...

Funciones redefinibles

Declaradas de esta forma las funciones pueden ser redefinidas en cualquier momento.

var operacionMatematica = function ( variable1, variable2) {
   return variable1 + variable2;
}

// Uso de operacionMatematica() como sumador...

operacionMatematica = function ( variable1, variable2) {
   return variable1 * variable2;
}

// Uso de operacionMatematica() como multiplicador...

Definiendo metodos de objetos

Al ser las propiedades de los objetos como variables, la definición de métodos de esta forma se hace mucho más sencilla:

En javascript Literal...

var miObjeto = {
   propiedad1 : "valor 1",
   metodo1 : function (variable1) {
      //código...
   }
}

O sobre objetos ya definidos...

var miObjeto = {...}

miObjeto.nuevoMetodo = function () {
   // código
}

En lugar de codigos javaScript lanzados desde strings

Resultan muy engorrosas esas opciones de javaScript que te permiten incluir como string y codigo javaScript que luego será ejecutado. Es mucho más cómodo definir como función ese parametro y que sea esta función la que sea lanzada.

// en vez de usar...
setTimeout( "codigo javascript",2000);
// usamos...
setTimeout( function(){
  //codigo
},1000);

Pasando procesos a otras funciones

Sobretodo en procesos de callback (acciones a realizar cuando la función acabe) resulta muy util no tener que definir la función que pasamos y en vez de eso definir la función como si fuese una variable de entrada de la primera función.

var miFuncion = function ( variable1, procesoCallBack) {
   // Código
  var x=1; // Suponiendo que el codigo defina x
  var y=2; // Suponiendo que el codigo defina y
  procesoCallBack( x , y );
}

miFuncion( "valor cualquiera", function (variable1,variable2 ) {
 alert( x + y );
};

// Se ejecutaría el codigo de miFunción y al terminar
// se mostraría un alert que diría "3".

Estas funciones se hacen realmente interesantes como callBacks para procesos Ajax, con restrasos en el tiempo o con animaciones.

[...]

¿Te interesa? Sigue leyendo...

Comenta este artículo

Temas Relacionados: jquery

Autor:

Sábado, 07 d febrero d 2009.

Diferenciar css entre navegadores (firefox, explorer y explorer 7)

Una información que muchos conocen pero que siempre viene bien recordar y organizar. ¿Como diferenciar el css entre navegadores?

La opción más aconsejada es empezar a maquetar siempre en un navegador que cumpla suficientemente bien los estándares y no hacerle un css demasiado complejo. A partir de ahí los descuadres en la maqueta, que deberían producirse solo en internet explorer,  se pueden arreglar con otros archivos css que podemos cargar como condicionales de explorer:

<link   rel="stylesheet" href="css/cssNormal.css" type="text/css" />
<!--[if IE]><link   rel="stylesheet" href="css/cssParaExplorer.css" type="text/css" /><![endif]-->

Con este tipo de códigos el css solo será cargado por navegadores explorer.

Una segunda opción también válida es la de utilizar formas válidas de definir los elementos del css pero que solo entienden algunos navegadores. De esta forma podemos añadir pequeños arreglos en un mismo archivo css sin que por ello nuestro código deje de validar.

#miDiv { código todos los navegadores }
* html #miDiv { solo lo entenderá IE6 }
*:first-child+html #miDiv{ solo lo entenderá IE7} 
html>/**/body #miDiv { solo lo entenderá FF }

Por último la forma más rápida de corregir un pequeño defecto es usando carácteres delante de propiedades de una misma definición css.

#miDiv { 
  margin:20px; /* para todos los navegadores */
  #margin:25px; /* para todos los internet explorer */
  -margin:30px;  /* solo para internet explorer 6 */
}

[...]

¿Te interesa? Sigue leyendo...

1 Comentario, leeló

Temas Relacionados: maquetacion

Autor:

Esto son experimentos, no preguntes ;) prueba metadescription Juego Prueba title Seo

render4