Kai345: Frage zu Prototypen

Beitrag lesen

[latex]Mae  govannen![/latex]

Alternativer Ansatz:

  
// Schablone  
// hier als Beispiel bewußt einfach gehalten  
var Mensch = {  
    name: 'unbenanntes Neugeborenes',  
    alter: 0,  
    niesen: 'Hatschi',  
    niest: function () {  
        console.log(this.name + ' macht ' + this.niesen);  
    },  
    init: function (props) {  
        for (var prop in props) {  
            if (props.hasOwnProperty(prop) && prop != 'init') {  
                this[prop] = props[prop];  
            }  
        }  
        return this;  
    }  
};  
  
var hans = Object.create(Mensch).init({  
    name: 'Hans',  
    alter: '100',  
    niesen: 'BruuhaaaatschiiiiAhhh'  
});  
  
var katja = Object.create(Mensch).init({  
    name: 'Katja',  
    alter: '22',  
    niest: function () {  
        alert('haa....');  
    }  
});  
  
var peter = Object.create(Mensch).init({  
    name: 'Peter',  
    alter: '34'  
});  
  
var jemand = Object.create(Mensch).init({  
    niesen: 'tschi'  
});  
  
console.log(peter.name, peter.alter);  
peter.niest();  
console.log(hans.name, hans.alter);  
hans.niest();  
console.log(katja.name, katja.alter);  
katja.niest();  
console.log(jemand.name, jemand.alter);  
jemand.niest();

Es wurde nur der erste Parameter von Object.create verwendet, um mit dem Polyfill auch ältere Browser bedienen zu können. Als "Quasi-Ersatz" wird die init-Funktion benutzt.

Stur lächeln und winken, Männer!
Kai

--
„Die Borg würden nicht mal Spaß verstehen, wenn sie einen Vergnügungspark assimiliert hätten!” (B'Elanna Torres)
SelfHTML-Forum-Stylesheet