Sembra simile al metodo Object.create
di Crockford, ma questa funzione viene utilizzata per "configurare" i costruttori.
accetta due costruttori come argomenti, e messe a punto l'prototype
del primo.
Permettetemi di rinominare i nomi delle variabili criptici:
function G(sub, super) {
var F = function() { };
F.prototype = super.prototype;
sub.superLink = super.prototype;
sub.prototype = new F();
}
function Super() {
//...
}
Super.prototype.member1 = 'superMember1';
function Sub() {
this.member2 = 'subMember2';
}
G(Sub, Super);
new Sub(); // Object { member2="subMember2", member1="superMember1"}
Edit: La proprietà T
è utilizzata semplicemente per sapere che cosa è il costruttore "super" del sub uno, Ho visto questo modello su altri luoghi, come nel libro Pro Patterns JavaScript design (page 43), con alcune aggiunte, per evitare che la proprietà constructor
per puntare l'oggetto sbagliato:
function extend(subClass, superClass) {
var F = function() {};
F.prototype = superClass.prototype;
subClass.prototype = new F();
subClass.prototype.constructor = subClass;
subClass.superclass = superClass.prototype;
if(superClass.prototype.constructor == Object.prototype.constructor) {
superClass.prototype.constructor = superClass;
}
}
Consulta anche:
Credo che quello che stai chiedendo è "il motivo per cui qualcuno dovrebbe fare questo?", Perché altro che rispondere "per confondere la gente", non ho niente per te. – wlangstroth
Dove l'hai trovato? La proprietà 'T' impostata non è tipica di alcun modello che ho visto per quanto riguarda l'ereditarietà prototipale. Ma quello che credo potrebbe essere il possesso del costruttore e la catena del prototipo. –