Pregunta

Lo siento si esto se responde en alguna parte (probablemente lo esté), pero no estoy muy seguro de cómo preguntarlo correctamente, así que fallé en buscar :(

Básicamente quiero hacer algo como esto:

(a||b).prototype.c = function () {
  // do something
}

Básicamente, A y B son objetos. Uno u otro existirá, pero no ambos. Pero no sé cuál existirá, pero necesito agregar un método a cualquiera que haga.

Ahora, sé que podría hacer algo como esto:

if (typeof(a) == 'object') {
  a.prototype.c = c;
} else if (typeof(b) == 'object') {
  b.prototype.c = c;
} 

function c () {
  // do something
}

Pero esto tiene el problema de que C tiene su propio espacio de nombres a nivel mundial, y no quiero eso. No quiero que C tenga su propio espacio de nombres a nivel global en cualquier momento.

Soo ... obviamente el primer bit de código anterior no funciona. ¿Cómo haría esto? ¿O algo como esto simplemente no es posible? Por favor, siéntase libre de cerrar y señalarme en la dirección correcta si esto ha sido respondido antes ...

¿Fue útil?

Solución

Creo que algo como esto resolverá tu problema:

(function() {
  var f = function() {
    //Prototype function
  };
  if(a)
    a.prototype.f = f;
  if(b)
    b.prototype.f = f;
})();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top