jueves, 31 de marzo de 2011

CALIFICADORES

HERENCIA

HERENCIA

Como en normal en Javascript, hay más de una forma de implementar herencia,
esto es debido a que la herencia no es explicita, es emulada. Vamos a ver
los dos métodos mas utilizados.

Object masquerading

Este método hace provecho del comportamiento de la palabra reservada this
dentro de las funciones, más específicamente, dentro de los constructores.
El funcionamiento es el siguiente: Un constructor asigna propiedades y métodos
a un objeto referenciándolo con la palabra clave this, como un constructor es simplemente una función,  se puede usar el constructor de una clase A como
método de una clase B


function ClaseA(nombre){
          this.nombre=nombre;
          this.identificarse=function(){
              alert(this.nombre);
          }
      }
function ClaseB(nombre){
          this.superClase=ClaseA;
          this.superClase(nombre);
          delete this.superClase;
      }

aplicativo this

La palabra clave que identifica un tipo especial de puntero. Supongamos que se crea un objeto denominado x de la clase A y clase A tiene una función miembro no estática f (). Si se llama a la función de xf (), la palabra clave this en el cuerpo de f () almacena la dirección de x. No se puede declarar el puntero this o hacer las tareas a él.

Una función miembro estática no tiene este puntero.


El tipo del puntero this para una función miembro de una clase de tipo X, es X * const. Si la función miembro se declara con el calificador const, el tipo del puntero esto para que la función de miembro de la clase X, es const X * const.

Una constante de este puntero puede utilizarse sólo con las funciones miembro const. Los miembros de datos de la clase será constante dentro de esa función. La función sigue siendo capaz de cambiar el valor, sino que requiere un const_cast de hacerlo:

vacío loquesea:: p () const {
miembro = 1; / / ilegal
<int&> const_cast (miembro) = 1; / / una mala práctica pero legal
} Una técnica mejor sería declarar miembro mutable.

Clase A y B