miércoles, 28 de marzo de 2012

Herencia de prototipos en javascript

En javascript no existe el concepto de "clase" ni de "extend" tal y como lo conocemos en otros lenguajes de programación, porque todos los objetos heredan de otros objetos y por lo tanto a la hora de realizar la herencia tendremos que hacerlo de una forma emulada. Muchos dicen que javascript no es exactamente un lenguaje orientado a objetos, y en parte tienen razón, pero yo casi prefiero alinearme con otra opinión; ¿qué puede haber más orientado a objetos que un lenguaje de programación dónde los objetos heredan de otros objetos?.

Quizá uno de los grandes problemas desde siempre de javascript es que al ser un lenguaje tan flexible, le pasa un poco lo que le pasa a PHP, que el control y el orden de la aplicación se lo pasan al usuario, por lo que muchas veces se genera código de baja calidad pero que es funcional.

La forma lógica de realizar herencia en javascript es mediante una "Herencia de prototipo". Cuando creamos un nuevo objeto, éste automáticamente recibe una propiedad que se denomina "prototype". Ésta propiedad es un objeto al que le podemos agregar otras propiedades que serán accesibles desde cualquier instancia del objeto que la contiene. Esto lo explicaremos con un ejemplo;


//Creamos un objeto Persona.
function Persona () {
this.ojos = 2;
this.piernas = 2;
this.manos = 2;
}
Persona.prototype.getManos = function(){
return " Esta persona tiene "+this.manos+" manos";
}

//Ahora creamos una instancia de persona.
var objPersona = new Persona();
console.log(objPersona.getManos()); // "Esta persona tiene 2 manos"


En el ejemplo anterior hemos creado una instancia de la clase Persona y le hemos añadido al "prototype" la función getManos(), por lo que cada vez que instanciemos una objeto de la clase Persona estará accesible getManos().

Lo siguiente que haremos será crear una clase Boxeador que herede directamente de Persona, y que recibirá como parámetro el peso y la altura.

//Aquí creamos la clase boxeador
function Boxeador (altura, peso) {
this.peso = new String(peso);
this.altura = new String(altura);
}
Boxeador.prototype = new Persona(); //Aquí le decimos de dónde hereda. 

//Aquí creamos una instancia de la clase boxeador.
var objBoxeador = new Boxeador("1.80","76");
console.log(objBoxeador.getManos()); // "Esta persona tiene 2 manos"


Aquí podemos ver cómo la instancia objBoxeador acaba de heredar de la clase persona la función getManos() por lo que ahora cualquier instancia de la clase Boxeador tendrá acceso a las propiedades de la clase Persona.

//Aquí falta incluír el ejemplo total.

viernes, 6 de mayo de 2011

3 frameworks para tus CSS


Un framework, como bien dice la Wikipedia, es una estructura conceptual y tecnológica de soporte definida, con la base para que otro proyecto de software pueda ser organizado y desarrollado. Su principal labor durante éste tiempo ha sido facilitar la creación del desarrollo de software, para no tener que preocuparse de temas repetitivos en cada proyecto y así poder centrarse en la verdadera funcionalidad de nuestra aplicación.
A continuación veremos una lista de frameworks verdaderamente útiles a la hora de desarrollar nuestro código HTML y nuestras hojas de estilo(CSS);

jueves, 5 de mayo de 2011

Y si empezamos?


En los últimos tiempos, el mundo de Internet ha sufrido muchísimos cambios y a gran velocidad. Cada vez que la web daba un paso, los usuarios normales, y entiéndaseme normales como consumidores web no desarrolladores, todavía estaban asimilando el paso anterior.

Cuándo la web se inició, nos encontrábamos en un entorno estático formado por páginas web en HTML que sufrían muy pocas actualizaciones y carentes de iteracción con el usuario. Con el tiempo, la web fué ganando en contenido con los lenguajes de servidor y los lenguajes cliente. Lenguajes como PHP, Javascript, Java, han sido muy importantes para el desarrollo del entorno web, tanto que hemos pasado de tener simples páginas web a verdaderas aplicaciones corriendo en la nube.

En éste blog trataremos temas interesantes en el desarrollo de aplicaciones en entorno web referentes a CSS, HTML, JS, PHP, jQUERY, SQL y otras tecnologías que poco a poco irán saliendo. Vamos allá...