JavaScript - POO (ámbito)

 
Vista:

POO (ámbito)

Publicado por Pablito (1 intervención) el 11/07/2012 13:28:03
Hola...

Tengo la clase:

function living(){
this.obj=eval("document.getElementById('"+living.arguments[0]+"')");
this.num=12;
this.obj.onclick=fncOnClick;
function fncOnClick(){
alert(num);
}
}

Creo el objeto llamando a esta clase:

p1=new living('person1'); // Hay una capa en la página cuyo id es "person1"

Lo que intento es que al pinchar en la capa me salga el alert(num), pero no me sale.

He probado a poner alert(this.num) pero me sale 'undefined'.

Sin embargo si pongo:

function living(){
this.obj=eval("document.getElementById('"+living.arguments[0]+"')");
living.num=12;
this.obj.onclick=fncOnClick;
function fncOnClick(){
alert(living.num);
}
}

Así sí me aparece el alert sacando el 12.

- ¿Porqué poniendo "living" sí me saca el 12 y si pongo "this" no?...
- ¿A qué se refiere "living" y a qué se refiere "this"?...pensaba que poner una u otra cosa eran lo mismo...¿cuál es la diferencia?

Gracias!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

"this" invoca a la función que lo encierra.

Publicado por aquiles (1 intervención) el 12/07/2012 20:46:14
Hola:


"this" invoca a la función que lo encierra.
http://www.etnassoft.com/2012/01/12/el-valor-de-this-en-javascript-como-manejarlo-correctamente/
1
2
3
4
5
6
7
8
9
10
function living(){
    var yo_mismo = this;
    this.obj=eval("document.getElementById('"+living.arguments[0]+"')");
    this.num=12; // o tambien yo_mismo.num = 12;
    this.obj.onclick=fncOnClick;
    function fncOnClick(){
        // si utilizas this aqui se refiere a la funcion fncOnClick y no a la instancia living.
        alert(yo_mismo.num);
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar