Foros del Web » Programando para Internet » Javascript »

Duda teórica: ámbito de las funciones

Estas en el tema de Duda teórica: ámbito de las funciones en el foro de Javascript en Foros del Web. 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"); ...
  #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!
  #2 (permalink)  
Antiguo 21/08/2010, 09:20
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Duda teórica: ámbito de las funciones

Creo que este artículo puede ayudarte:
http://imbuzu.wordpress.com/2009/06/...u-los-metodos/

Etiquetas: funciones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:38.