Je me suis déjà un peu initié à la POO avec des langages plus évolués mais là j'ai un peu de mal avec javascript...Et avec l'heure qu'il est je ne suis plus trop apte à réfléchir

Ma classe est un parser XML
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
function xmlParser()
{
	/* je ne sais pas trop quoi mettre dans le constructeur
    peut être this.xmlDoc = xmlDoc avec xmlDoc en paramètre mais ça ne marche pas non plus */
}
Puis vient ensuite la méthode loadXML et là vient le problème ce qui est un peu normale...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
xmlParser.prototype.loadXml = function(file)
{
	/* chargement du fichier XML */
	try {
		// navigateur basé sur Gecko
		if (document.implementation && document.implementation.createDocument)
		{
			this.xmlDoc = document.implementation.createDocument("", "doc", null);
			this.xmlDoc.onload = function() { this.loaded = true; }
			this.xmlDoc.load(file);
		}
     // il y a d'autres tests pour IE et XMLHTTPRequest mais on va faire court.
	} catch (e) {
		alert(e);
		return false;
	}
 
	return true;
}
Mon problème c'est qu'ainsi je me retrouve avec une erreur capté par catch
TypeError: xmlDoc has no properties
car en fait je n'arrive pas à définir xmlDoc afin de la trimbaler dans toutes les méthodes de la classe...

Par contre si je fais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
var xmlDoc = document.implementation.createDocument("", "doc", null);
xmlDoc.onload = function() { this.loaded = true; }
xmlDoc.load(file);
Je n'ai évidemment pas d'erreur mais ma variable n'est visible que dans la méthode loadXml...

En clair, comment puis-je définir proprement xmlDoc (ou toute autre variable) afin de pour l'utiliser dans toutes les méthodes de la classe ??

modéré par denisC : ajout du tag résolu