javascript: prototipazione con più oggetti
-
27-10-2019 - |
Domanda
Scusa se questo si risponde da qualche parte (probabilmente lo è), ma non sono del tutto sicuro di come chiedere anche in modo corretto, quindi non sono riuscito a ricercare :(
Fondamentalmente voglio fare qualcosa di simile:
(a||b).prototype.c = function () {
// do something
}
Fondamentalmente ae b sono oggetti. Uno o l'altro esistono volontà, ma non entrambi. Ma io non so che esiste, ma ho bisogno di aggiungere un metodo a qualsiasi uno fa.
Ora, so che avrei potuto fare qualcosa di simile:
if (typeof(a) == 'object') {
a.prototype.c = c;
} else if (typeof(b) == 'object') {
b.prototype.c = c;
}
function c () {
// do something
}
Ma questo ha il problema di c avere un proprio spazio dei nomi a livello mondiale, e non voglio questo. Non voglio c avere un proprio spazio dei nomi a livello mondiale in qualsiasi punto nel tempo.
Soo ... ovviamente il primo bit del codice di cui sopra non funziona. Come potrei fare per questo? O è qualcosa di simile a questo semplicemente non è possibile? Non esitate a chiudere e puntare a me nella giusta direzione, se questo è stato risposto prima ...
Soluzione
Credo che qualcosa di simile a questo risolverà il problema:
(function() {
var f = function() {
//Prototype function
};
if(a)
a.prototype.f = f;
if(b)
b.prototype.f = f;
})();