Object.prototype.Clone=function() { var objClone=new this.constructor(); //这里是创建一个与被Clone对象相同结构的对象 for(var key in this) { if(objClone[key]!=this[key]) { if(typeof(this[key])=='object') { objClone[key]=this[key].Clone(); } else { objClone[key]=this[key]; } } } if(!objClone || (''+objClone)=='') { return (new String(this)+objClone)?this:objClone; } else { objClone.toString=this.toString; return objClone; } } //数组克隆 Array.prototype.clone = function() { var c = []; var old = this; for (var i=0; i<old.length; i++) { var o = old[i]; c[i] = o.clone ? o.clone() : o; //o.clone存在 说明是数组 但是也不一定 我觉得这个有点问题 } return c; }