javascript: prototypage avec de multiples objets
-
27-10-2019 - |
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 ...
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;
})();