Don P: nur array-kopie verändern

Beitrag lesen

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