Ho questo codice che mi fa un post ad una pagina:

codice:
function button1_onclick() 
{
    submitData("a.aspx", {nome:"pietro"}  );
}

//*****************
/* Questo codice va in un file esterno */
//-------------------------------------------------------------------------------------
// crea un form e fa submit passando dati POST
// utilizzo: 
// w = window.open("", "popup", "left=100px, top=100px, width=500px, height=400px,");
// w.focus();
// submitData("a.aspx", {nome:'Pietro', numero:'999', data:'15/3/1999'} , "popup");
//-------------------------------------------------------------------------------------
function submitData(url, data, target)
{
	var form = document.createElement("form");
	form.action = url;
	form.target = (target != undefined)? target: "_self";
	form.method = "post";
	form.style.display = "none";
	for(var key in data) addParam(form, key, data[key]);
	document.body.appendChild(form);
	form.submit();
	document.body.removeChild(form);
}

function addParam(form, key, value)
{   
    if( typeof(form) == "string") 
        form = document.getElementById(form);
	
	var input = document.createElement("input");
	input.type = "hidden";
	input.name = key;
	input.value = value;
	form.appendChild(input);
}
La pagina, server, recupera i parametri spediti e li fa vedere sullo schermo. Fin qui non ci sono problemi.

Adesso aggiungo questo codice, che mi serve per clonare un oggetto generico
codice:
function clone (deep) 
{
    var objectClone = new this.constructor();
    for (var property in this)
    {
        if (!deep) 
            objectClone[property] = this[property];
        else if (typeof this[property] == 'object')
            objectClone[property] = this[property].clone(deep);
        else
            objectClone[property] = this[property];
    }
    return objectClone;
}
Object.prototype.clone = clone;
L'ultima istruzione, Object.prototype.clone = clone; mi fa una cosa che non riesco a spiegare e risolvere:
Guardando i parametri post ricevuti dalla pagina trovo un parametro chiamato clone con valore proprio la funzione

per essere più chiari, ricevo una variabile

clone="function clone (deep) { var objectClone = new this.constructor(); for (var property in this) { if (!deep) objectClone[property] = this[property]; else if (typeof this[property] == 'object') objectClone[property] = this[property].clone(deep); else objectClone[property] = this[property]; } return objectClone; }"

Non è che mi diate una mano per capire?