J'étais confronté à une difficulté similaire et aucune des solutions présentées ici n'était optimale pour ce sur quoi je travaillais. J'avais une série de fonctions permettant d'afficher du contenu dans une modale et j'essayais de la refactoriser sous une seule définition d'objet en faisant des fonctions des méthodes de la classe. Le problème est apparu lorsque j'ai découvert que l'une des méthodes créait des boutons de navigation à l'intérieur de la modale elle-même, qui utilisaient un onClick vers l'une des fonctions - maintenant un objet de la classe. J'ai envisagé (et j'envisage encore) d'autres méthodes pour gérer ces boutons de navigation, mais j'ai pu trouver le nom de la variable pour la classe elle-même en balayant les variables définies dans la fenêtre parent. J'ai recherché tout ce qui correspondait à "instanceof" de ma classe et, au cas où il y en aurait plus d'une, j'ai comparé une propriété spécifique susceptible d'être unique pour chaque instance :
var myClass = function(varName)
{
this.instanceName = ((varName != null) && (typeof(varName) == 'string') && (varName != '')) ? varName : null;
/**
* caching autosweep of window to try to find this instance's variable name
**/
this.getInstanceName = function() {
if(this.instanceName == null)
{
for(z in window) {
if((window[z] instanceof myClass) && (window[z].uniqueProperty === this.uniqueProperty)) {
this.instanceName = z;
break;
}
}
}
return this.instanceName;
}
}
0 votes
Vous pourriez vouloir voir ça : stackoverflow.com/questions/789675/