Originariamente inviato da Marcolino's
[…] a me andava di renderla modulare in modo da caricare a run time solo gli oggetti che usavo davvero e di farlo appunto con prototype, ma mi da quello strano errore, mentre in questa che ho messo qui funziona benissimo.
Adesso ho capito qual è il tuo problema. Devi fare così per tutte le proprietà:

codice:
var $ = {};	//	Oggetto vuoto e pronto per la modifica.
var elements = [];	//	Utilizzata per concatenare più oggetti.
/**
*	Prende l'IDentificativo dell'elemento in oggetto (funzione cross browser)
*		Uso: var e = $.Element.get('pippo').value; Se 'pippo' è un controllo tipo INPUT, in value c'è il suo valore
*/
// carico il primo modulo
$.Element = {

	/**
	*	Metodo: cache
			Mette nella cache un elemento DOM (metodo privato di get: vedi sotto)
			Argomenti:
			    - [string] id : l'id dell'elemento desiderato
	*/
	cache: function(id) {		
			if(!elements[id]) {
				if (document.getElementById) {	// 	Mozilla + IE6/7/8/9
					elements[id] = document.getElementById(id);
				} else if (document.all) {	//	IE4
					elements[id] = document.all[id];
				} else if (document.layers) {	// 	Netscape 4
					elements[id] = document.layers[id];
				}
			}
	return elements[id];
	},	//	cache()
	
	/**
	*       Metodo: get
	        Restituisce un elemento DOM basandosi sull'id dello stesso
	        Argomenti:
	            - [string] id : l'id dell'elemento desiderato
				
			Esempio d'uso: var valore = $.Element.get('pippo').value;
	*/
	get: function(id) {
		var e = false;
		if (typeof id == 'string') {	//	Se l'ID è una stringa lo processo
			e = cache(id);
		}
	return e;
	}	//	get()
};	//	Element
Vedrai che così ti funzionerà. Spero che tu abbia capito a cosa servono i prototipi…