Question

Désolé si réponse quelque part ce (il est probablement), mais je ne suis pas tout à fait sûr comment demander même correctement, donc je recherche a échoué à :(

En fait, je veux faire quelque chose comme ceci:

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

Fondamentalement, a et b sont des objets. L'un ou l'autre exist de volonté, mais pas les deux. Mais je ne sais pas ce qui existe, mais je dois ajouter une méthode à celui qu'on fait.

Maintenant, je sais que je pouvais faire quelque chose comme ceci:

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

function c () {
  // do something
}

Mais ce qui a le problème de c ayant son propre espace de noms au niveau mondial, et je ne veux pas. Je ne veux pas c d'avoir son propre espace de noms au niveau mondial à tout moment.

Soo ... évidemment le premier morceau de code ci-dessus ne fonctionne pas. Comment pourrais-je aller à ce sujet? Ou quelque chose comme ça tout simplement pas possible? S'il vous plaît ne hésitez pas à fermer et me diriger dans la bonne direction si cela a été répondu avant ...

Était-ce utile?

La solution

Je pense que quelque chose comme cela va résoudre votre problème:

(function() {
  var f = function() {
    //Prototype function
  };
  if(a)
    a.prototype.f = f;
  if(b)
    b.prototype.f = f;
})();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top