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 !"

results matching ""

    No results matching ""