oggetti javascript

lally_fragola

Utente Attivo
26 Apr 2010
43
1
0
Ciao a tutti, sto muovendo i primi passi nel programmare a oggetti con javascript... e già sono incartata :D. Dunque io vorrei poter definire una "classe"(anche se ho letto che in realtà nn esiste il concetto di classe, in realtà sono funzioni, però richiamandole con new ottengo un risultato simile) le cui istanze sono delle div con particolari proprietà nonchè eventi associati. Per fare questo devo trovare un modo di estendere la classe nativa div e non so come fare...ho fatto un tentativo di questo tipo:
Codice:
	<script type="text/javascript">
			function super_div(cod)
			{
				this.prototype= new Element("div");
				this.id=cod;
				$(this).appendTo(document.body);
			}
		
		</script>

ma(firebug) mi lancia un'eccezione:
"
Errore: uncaught exception: [Exception... "Cannot convert WrappedNative to function" nsresult: "0x8057000d (NS_ERROR_XPC_CANT_CONVERT_WN_TO_FUN)" location: "JS frame :: http://localhost/demo/oggetti.html :: super_div :: line 11" data: no]
"
Che mi fa pensare che sto sbagliando di grosso :P Qualcuno può aiutarmi :)?
Grazie
 
Aggiungo un dettaglio: utilizzo jquery, ecco perchè c'è $(this).appendTo... cioè probabilmente lo sapevate già, però vabbè dirlo nn costa niente :P grazie
 
Non è vero che non esistono le classi in javascript è che ne esiste una sola a cui puoi accedere ma non riscriverla, parlo della classe javascript da cui tutto dipende.
Dato che javascript è un linguaggio ad oggetti puro, tutto ciò che discende da quella classe è un oggetto, quindi puoi creare oggetti.
Tu nel tuo esempio sei già partita con un approccio procedurale e non a oggetti, infatti hai subito inserito il tutto dentro ad una funzione.
Non so cosa vuoi realizzare quindi non posso aiutarti, ma prova ad usare un tuo oggetto.
Codice:
var oggetto =  {
       super_div: function (cod) {
                                this.prototype= new Element("div");
				this.id=cod;
				$(this).appendTo(document.body)
       }
}
a cui accederesti così: oggetto.superdiv(cod);
 
Mi dispiace, avevo capito che dal momento che non posso creare classi non erano comprese nel linguaggio :P Comunque cerco di spiegarti meglio quello che vorrei fare: vorrei un oggetto che mantiene tutte le proprietà di una div, come se lo creassi con new element("div") ma a cui io posso aggiungerne altre proprietà e metodi, arbitrarie, a seconda di cosa mi serve. Diciamo che vorrei realizzare una cosa analoga a quello che in java si fa con extends: ottengo una sottoclasse che ha tutte le proprietà e i metodi della madre ma posso aggiungerne altri solo suoi. Si può fare in javascript? se si puoi darmi una dritta a livello di codice :D?
Grazie
 

Discussioni simili