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?