<div dir="ltr">Ciao Jusi,<div>per chiamare la funzione "per" all'interno di rec, dovresti aggiungere un paio di parentesi:</div><div><br></div><div><span style="font-size:12.8px"><script language="javascript" type="text/javascript"></span><br style="font-size:12.8px"><span style="font-size:12.8px">var r=new rec(7,4);</span><br style="font-size:12.8px"><span style="font-size:12.8px">s="x="+r.x+"<br>y="+r.y+"<br>"</span><wbr style="font-size:12.8px"><span style="font-size:12.8px">;</span><br style="font-size:12.8px"><span style="font-size:12.8px">s+="area:"+r.area+"<br>perimet</span><wbr style="font-size:12.8px"><span style="font-size:12.8px">ro="+r.per()+"<br>";</span><br style="font-size:12.8px"><span style="font-size:12.8px">document.write(s);</span><br style="font-size:12.8px"><span style="font-size:12.8px"></script></span><br></div><div><br></div><div>Ambiguo comunque il fatto che ti printi il testo della funzione..</div><div><br></div><div>Ciao</div><div>Mirko</div></div><div class="gmail_extra"><br><div class="gmail_quote">Il giorno 6 ottobre 2016 21:35, Jusi Pomenti <span dir="ltr"><<a href="mailto:jusipom@gmail.com" target="_blank">jusipom@gmail.com</a>></span> ha scritto:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Ciao,<br>
<br>
scusate se sono OT,ma ho un problema nella definizione di oggetti javascript.Non avendoli mai usati,ho scritto questo semplice script per capire come funzionano gli oggetti in questo linguaggio:<br>
<br>
<script language="javascript" type="text/javascript"><br>
function calcola_area(x,y)<br>
{<br>
return x*y;<br>
}<br>
function rec(x,y)<br>
{<br>
this.x=x;<br>
this.y=y;<br>
this.area=calcola_area(this.<wbr>x,this.y);<br>
this.per=function()<br>
{ return 2*(this.x*this.y) };<br>
}<br>
</script><br>
<br>
richiamandolo cosi':<br>
<br>
<script language="javascript" type="text/javascript"><br>
var r=new rec(7,4);<br>
s="x="+r.x+"<br>y="+r.y+"<br>"<wbr>;<br>
s+="area:"+r.area+"<br>perimet<wbr>ro="+r.per+"<br>";<br>
document.write(s);<br>
</script><br>
<br>
l'output che ottengo è::<br>
<br>
x=7<br>
y=4<br>
area:28<br>
perimetro=function () { return 2*(this.x*this.y) }<br>
<br>
L'area viene calcolata bene ma da una funzione esterna all'oggetto per cui non rispetta la regola dell'incapsulamento propria dell'OOP;<br>
<br>
La funzione "per",interna all'oggetto,dovrebbe essere il modo corretto di definire un metodo e dovrebbe restituire 22 invece restituisce il testo della funzione stessa;perche'?<br>
<br>
Ciao e grazie<span class="HOEnZb"><font color="#888888"><br>
<br>
Jusi<br>
<br>
<br>
-- <br>
------------------------------<wbr>-<br>
Junior Silvestro Pomenti<br>
Latina<br>
Email: jusipom(at)<a href="http://gmail.com" rel="noreferrer" target="_blank">gmail.com</a><br>
------------------------------<wbr>-<br>
<br>
______________________________<wbr>_________________<br>
<a href="http://www.llg.it" rel="noreferrer" target="_blank">http://www.llg.it</a><br>
latina mailing list<br>
<a href="mailto:latina@lists.linux.it" target="_blank">latina@lists.linux.it</a><br>
<a href="https://lists.linux.it/listinfo/latina" rel="noreferrer" target="_blank">https://lists.linux.it/listinf<wbr>o/latina</a><br>
</font></span></blockquote></div><br></div>