Objetos
- Clases en JavaScript:
nombre_clase = function (){};
Ejemplo de clase:
rabbit.speak = function (line){
console.log("The rabbit says '" + line + "'");
};
rabbit.speak("I'm alive.");
//The rabbit says 'I'm alive.'
ss
- Creación de un objeto básico:
var MiObjeto = MiObjeto {};
Ejemplo de objeto:
var rabbit = {};
- Variable especial this:
function speak(line) {
console.log("The " + this.type + " rabbit says '" +
line + "'");
}
var whiteRabbit = {type: "white", speak: speak};
var fatRabbit = {type: "fat", speak: speak};
whiteRabbit.speak("Oh my ears and whiskers, " +
"how late it's getting!");
// → The white rabbit says 'Oh my ears and whiskers, how
// late it's getting!'
fatRabbit.speak("I could sure use a carrot right now.");
// → The fat rabbit says 'I could sure use a carrot
// right now.'
Herencia
La herencia es una manera de crear una clase como una versión especializada de una o más clases (JavaScript sólo permite herencia simple). La clase especializada comúnmente se llama hija o secundaria, y la otra clase se le llama padre o primaria. En JavaScript la herencia se logra mediante la asignación de una instancia de la clase primaria a la clase secundaria, y luego se hace la especialización.
En el siguiente ejemplo definimos la clase Estudiante como una clase secundaria de Persona. Luego redefinimos el método diHola() y agregamos el método diAdios().
// Definimos el constructor Persona
function Persona(primerNombre) {
this.primerNombre = primerNombre;
}
// Agregamos un par de métodos a Persona.prototype
Persona.prototype.caminar = function() {
alert("Estoy caminando!");
};
Persona.prototype.diHola = function(){
alert("Hola, Soy" + this.primerNombre);
};
// Definimos el constructor Estudiante
function Estudiante(primerNombre, asignatura) {
// Llamamos al constructor padre, nos aseguramos (utilizando Function#call) que "this" se
// ha establecido correctamente durante la llamada
Persona.call(this, primerNombre);
//Inicializamos las propiedades específicas de Estudiante
this.asignatura = asignatura;
};
// Creamos el objeto Estudiante.prototype que hereda desde Persona.prototype
// Nota: Un error común es utilizar "new Persona()" para crear Estudiante.prototype
// Esto es incorrecto por varias razones, y no menos importante que no le estamos pasando nada
// a Persona desde el argumento "primerNombre". El lugar correcto para llamar a Persona
// es arriba, donde llamamos a Estudiante.
Estudiante.prototype = Object.create(Persona.prototype); // Vea las siguientes notas
// Establecer la propiedad "constructor" para referencias a Estudiante
Estudiante.prototype.constructor = Estudiante;
// Remplazar el método "diHola"
Estudiante.prototype.diHola = function(){
alert("Hola, Soy " + this.primerNombre + ". Estoy estudiando " + this.asignatura + ".");
};
// Agregamos el método "diAdios"
Estudiante.prototype.diAdios = function() {
alert("¡ Adios !");
};
// Ejemplos de uso
var estudiante1 = new Estudiante("Carolina", "Física Aplicada");
estudiante1.diHola(); // muestra "Hola, Soy Carolina. Estoy estudianto Física Aplicada."
estudiante1.caminar(); // muestra "Yo estoy caminando !"
estudiante1.diAdios(); // muestra "¡ Adios !"