Hallo,
Wenn man eine klassische Konstruktorfunktion wie A mit eingeschweißtem, unlesbarem Wert x hat, ist ein Kopieren wohl wirklich unmöglich.
Nicht wirklich
Doch, denn deine copy-Funktion kopiert nicht das Objekt a, sondern erzeugt nur ein jungfräulich neues:
Object.prototype.copy = function() {  
	return new this.constructor();  
}  
function A(n) {  
        var x = n;  
        this.a = function() {alert(x)};  
        this.x = function(p) {x = p; };  
}  
var a = new A(1);  
var b = a.copy();  
//b.x(2);  
a.a(); // 1  
b.a(); // undefined !!!
Dafür hätte ein einfaches var b = new A(); gereicht.
Die object-Funktion dagegen erhält wenigstens das x, aber halt nicht als eigenes, und man kann es auch durch nachträgliche Zuweisung nicht hinbekommen.
=> Wirklich kopieren geht wohl doch nicht in so einem Fall.
Gruß, Don P
 nicht angemeldet
 nicht angemeldet Struppi
 Struppi