Mil gracias Joseba, entendi todo y me ayud� a entender algo de los dem�s
capitulos.
Mil gracias!

Saludos!
Jes�s
--------------------------------------
http://www.xflash.8k.com
Lima-Per�

----- Original Message -----
From: Joseba Alonso <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, March 07, 2002 5:54 PM
Subject: Re: [flashmaestro] Propiedades locales dentro de una funcion.


> Hola de nuevo,
>
> >
> > A=function(){
> > var temp=5
> > this.x=temp
> > }
> > trace(A.temp)
> > //no sale nada
>
> la razon es muy sencilla, ahi estas creando una clase, no un objeto. Por
> tanto necesitas instanciarlo para poder acceder a sus propiedades y
metodos.
> En Flash simplemente no puedes crear una clase con metodos o propiedades
> "static" (Que alguien me corrija si me equivoco). Por si no lo sabes se
> denomina "static" a toda propiedad o metodo de una clase que se puede
llamar
> sin instanciar ningun objeto. Por ejemplo todos los metodos y propiedades
de
> la clase Math son del tipo "static" (Math.PI, Math.random()...etc), cuando
> esto ocurre se dice que la clase es "static".
>
> > Porque si a pesar de crear una llamada no se muestra "temp"?:
> > nuevo=new A()
> > trace(nuevo.temp)
> > //no sale nada
> > trace(nuevo.x)
> > //s� muestra 5
> >
> > En que manera "var" afecta a una propiedad de la funcion y porque por
ello
> > "temp" se hace un objeto temporal?
>
> en realidad cuando tu declaras la variable con "var" lo que estas diciendo
> que esa variable tiene que eliminarse de la memoria al finalizar el metodo
> (en este caso el contructor). Por tanto si pones el "var" delante la
> variable sera borrada al final del metodo, sino no. De todas maneras,
> temporal o no, tu nunca puedes acceder a ella directamente, ni a trav�s de
> las instancias porque "temp" es una variable cuyo �mbito (scope) es el
> propio metodo, no de la instancia. Por tanto si, existe por ahi, en alguna
> parte, pero tu no puedes acceder a ella directamente. Te pongo un ejemplo:
>
> A=function(){
>  var temp = temp + 5
>  this.x=temp;
>  }
> aa = new A();
> trace("Instancia 1 "+aa.x); // 5
> ab = new A();
> trace("Instancia 2 "+ab.x) // Tambi�n 5
>
> Aqui como puedes comprobar, al declararla con "var", la variable muere y
es
> eliminada de la memoria al finalizar el constructor. Por eso la segunda
> instancia toma el valor de 5 tambi�n.
>
> A=function(){
>  temp = temp + 5
>  this.x=temp;
>  }
> aa = new A();
> trace("Instancia 1 "+aa.x); // 5
> ab = new A();
> trace("Instancia 2 "+ab.x) // 10
>
> Como no ha sido declarada, la variable se convierte en permanente para
dicho
> constructor con lo que al finalizar no es eliminada de la memoria. Y
cuando
> creas el segundo objeto la propiedad x es 10. Esto demuestra que esta
> variable si *existe* pero no se puede acceder a ella directamente. Un
> variable solo se "covierte", por asi decirlo, en propiedad cuando se usa
la
> palabra clave "this", entonces y solo entonces es heredada por todas las
> instancias que creas a partir de la clase.
>
> Un saludo
>
> Joseba Alonso
> Desarrolador Web
> www.inproweb.com
> www.sidedev.net
>
>
>

Responder a