Klaus: Frage zu Prototypen

Beitrag lesen

Vielen Dank!
+hilfreich vom Unregistrierten.

Habe dein Beispiel mal, um es zu verstehen, in mein Klaus-Beispiel konvertiert.
Ich verwende JSON.stringify, weil [object Object] so unleserlich ist.

  
function log() { // Tipparbeit sparen  
    s = '';  
    for(c=0; c<arguments.length; c++) {  
        if (c == 0) {  
            s += arguments[c]+': ';  
        } else {  
            s += JSON.stringify(arguments[c]);  
            if (c < arguments.length-1) {  
                s += ',';  
            }  
        }  
    }  
    console.log(s);  
}  
  
  
  
function ClassicKlaus(alter){  
    if(alter) {  
        this.alter=alter;  
    } else {  
        this.alter=35;  
    }  
}  
  
function SmartKlaus(alter) {  
    if(alter && alter!==this.alter) {  
        this.alter=alter;  
    }  
}  
SmartKlaus.prototype.alter=30;  
  
var ck1 = new ClassicKlaus();  
var ck2 = new ClassicKlaus();  
var ck3 = new ClassicKlaus(40);  
  
var sk1 = new SmartKlaus;  
var sk2 = new SmartKlaus;  
var sk3 = new SmartKlaus(40);  
  
console.log('Alles über Klaus:')  
log('Classic Klaus 1, 2 und 3', ck1, ck2, ck3);  
log('Smart Klaus 1, 2 und 3', sk1, sk2, sk3);          // bei sk2 und 3 wird Speicherplatz gespart ...  
log('Smart Klaus Prototype', SmartKlaus.prototype); // .. weil stattdessen hier nachgeguckt wird  
  
console.log('Das Alter jedes Klaus:')  
log('Classic Klaus 1, 2 und 3', ck1.alter, ck2.alter, ck3.alter);  
log('Smart Klaus 1, 2 und 3', sk1.alter, sk2.alter, sk3.alter);  
log('Smart Klaus Prototype', SmartKlaus.prototype.alter);  
  
SmartKlaus.prototype.alter=35  
console.log('Nochmal das Alter jedes Klaus (jetzt mal ehrlich):')  
log('Classic Klaus 1, 2 und 3', ck1.alter, ck2.alter, ck3.alter);  
log('Smart Klaus 1, 2 und 3', sk1.alter, sk2.alter, sk3.alter);  
log('Smart Klaus Prototype', SmartKlaus.prototype.alter);  

Gruß, Klaus, der Smarte :-D