Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/08/2010, 05:55
isra00
Invitado
 
Mensajes: n/a
Puntos:
Pregunta Duda teórica: ámbito de las funciones

Hola a todos, estoy profundizando en JavaScript, experimentando con objetos, prototipos, etc. El caso es que tengo una clase:


Código:
clase = function() {

    alert("Constructor");

    this.un_metodo = function() {
        this.otro_metodo();
    }
    
    this.otro_metodo = function() {
        alert("Soy otro");
    }
}
Entonces yo puedo instanciar la clase y ejecutar un método:

Código:
a = new clase();
a.un_metodo();
Pero si en vez de definir otro_metodo como lo he hecho, con una función anónima, lo hago como una función normal:

Código:
clase = function() {

    alert("Constructor");

    this.un_metodo = function() {
        this.otro_metodo();
    }
    
    function otro_metodo() {
        alert("Soy otro");
    }
}
Si vuelvo a instanciar la clase y ejecutar un_metodo saltará un error: this.otro_metodo() no existe. ¿Cómo se explica que otro_metodo() sólo exista en el ámbito de clase, pudiendo ser llamado como otro_metodo() (sin la cláusula this) pero no con la cláusula this? ¿Es una función dentro de la clase... pero no es un método de la clase...?

¿Algún experto en la sala que me lo explique? Gracias!