Attualmente sto lavorando su un progetto in cui viene utilizzata la seguente struttura di ereditarietà:eredità classica e pool di oggetti
var Type = function(a){
this.a = a;
};
var SubType = function(a){
Type.call(this, a);
};
SubType.prototype = Object.create(Type.prototype);
SubType.prototype.constructor = SubType;
Ora, sto cercando aggiungere un po 'il pool di oggetti per l'equazione. Il modello Attualmente sto usando opere qualcosa di simile (pseudocodice):
Type.new = function(){
if object available in pool
reset popped pool object
return pool object
else
return new Type()
}
var a = Type.new();
Naturalmente, il problema con l'utilizzo di questi due modelli è che le chiamate costruttore sul sottotipo solito traggono dal pool di Type. C'è un modo per aggirare questo senza passare a una struttura di fabbrica? Cioè c'è un modo, in un costruttore, di fare qualcosa sulla falsariga di:
var SubType = function(){
build on top of instanceReturnedFromFunction()
};
Sapendo che non è sempre coerente in tutti i contesti, mi piacerebbe piacerebbe anche per preservare la struttura di ereditarietà in modo che instanceof ecc continuerà a funzionare :
Che cos'è una "struttura di fabbrica" e perché vuoi evitarlo? – Bergi
Per struttura di fabbrica, intendo refactoring da costruttori/nuovo a qualcosa sulla falsariga di 'function Type (a) {return {a: a}}'. Per quanto riguarda il motivo: comporterebbe una quantità di refactoring, e escluderebbe l'uso di alcuni operatori incorporati (istanza di ecc.) – Nodehead
Ah, capisco. Pensavo intendessi la fabbrica di "Type.new' ... – Bergi