Chi e' affetto da object-orientation syndrome come me, puo' trovare utile create gerarchie di oggetti in Javascript
// Costruttore (ctor) della classe base
function Base(name) {
this.name = name || "defaultBaseName";
}
// I metodi della classe base
Base.prototype = {
hello : function() {
alert("base hello :" + this.name);
}
}
// Costruttore (ctor) della classe derivata
function Der1(name, count) {
// Chiamiamo il ctor della classe base
// utilizzando il metodo call
Base.call(this, name);
this.count = count;
}
// Der1 "eredita" i metodi e le proprieta' di Base
Der1.prototype = new Base();
// Creiamo una funzione con i metodi specifici di Der1
var der1Methods = function() {
this.my = function() {
this.hello();
alert("der1 " + this.name + " count = " + this.count);
}
// Creaiamo un getter, non possiamo usare
// la sintassi "get theSimpleName"
// cosi' utilizziamo direttamente
// la proprieta' __defineGetter__
this.__defineGetter__("theSimpleName", function() {
return this.name;
})
// Commentando questo metodo la proprieta' theSimpleName
// diventa di sola lettura
this.__defineSetter__("theSimpleName", function(name) {
this.name = name;
})
};
// Applichiamo i metodi al prototipo di Der1
der1Methods.apply(Der1.prototype);
Ed ecco un semplice test di quando scritto sopra
function test() {
try {
var d = new Der1("der_name", 65);
d.my();
alert("1--> " + d.theSimpleName);
d.theSimpleName = "new name";
alert("2--> " + d.theSimpleName);
} catch (err) {
alert("error " + err);
}
}