Bonjour à tous,

Je suis débutant en JavaScript et je souhaiterais faire une class comme en programmation orienté objet.
Je suis conscient que JavaScript n'est pas fortement typé et donc pas un language POO classique …

Ma classe logger fonctionne mais je souhaiterais savoir si je vais dans la bonne direction car je vais me lancer dans un projet assez conséquent.

Mes questions sont les suivantes:
- cette classe est-elle correcte selon vous?
- j'ai lu qu'il fallait utiliser le mot clé prototype pour éviter que les méthodes soit dupliquer à chaque instances ?

D'avance, merci beaucoup de votre aide.
Très bonne journée et meilleures salutations.

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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
/**
* Logging Class
* @class <b>idsLog</b> contains a JavaScript Loggin Extensions. Include this library and use the idsLog object in your script.<br/><br/><code>#include "idsHelper.jsx"<br/>[...]<br/>_log = idsLog(FILE, "DEBUG")<br/>_log.debug("Log me")</code><br/>
* @param {File} _logFile  The Logfile as File-Object.
* @param {String} _logLevel One of the "OFF" "ERROR", "WARN", "INFO", "DEBUG", sets the current Logger to log only Events more or equal severe than the Loglevel.
*/
function Log(_logFile, _logLevel) {
    // private var
    var info_str = {en: "Info", fr: "Information"};
    var warn_str = {en: "Warning", fr: "Avertissement"};
    var error_str = {en: "Error", fr: "Erreur"};
    var consult_log_file_str = {en: "for more informations read the log file", fr: "pour plus d'informations consultez le fichier log"};
    var logFile = _logFile;	
    var SEVERITY = [];
	SEVERITY["OFF"] = 4;
	SEVERITY["ERROR"] = 3;
	SEVERITY["WARN"] = 2;
	SEVERITY["INFO"] = 1;
	SEVERITY["DEBUG"] = 0;
	var logLevel = (_logLevel == undefined) ? 0 : SEVERITY[_logLevel];
    // private function
	function writeLog(_message, _severity) {
		logFile.open("e");
		logFile.seek(logFile.length);	
		try {
			logFile.writeln(Date() + " [" + _severity + "] " + ((_severity.length == 4) ? " [" : "[")  + app.activeScript.name + "] " + _message);
		} catch (e) {
			//We're running from ESTK 
			logFile.writeln(Date() + " [" + _severity + "] " + ((_severity.length == 4) ? " [" : "[")  + "ESTK] " + _message);
		}
		logFile.close();
	};
 
    /**
    * Writes a debug log message
    * @param {String} _message Message to log.
    */
    this.debug = function(_message) {
        if (logLevel <= 0)  writeLog(_message, "DEBUG"); 
    };
    /**
    * Writes a info log message
    * @param {String} _message Message to log.
    */
    this.info = function (_message) {
        if (logLevel <= 1)  writeLog(_message, "INFO"); 
    };
 
     this.infoAlert = function (_message) {
         if (logLevel <= 1){
            writeLog(_message, "INFO"); 
            alert (localize(info_str) + "\n" + _message + "\n\n" + localize(consult_log_file_str) + ":\n" + logFile);
         }
     };
 
    /**
    * Writes a warn log message
    * @param {String} _message Message to log.
    */
    this.warn = function (_message) {
        if (logLevel <= 2)  writeLog(_message, "WARN"); 
    };
 
 
    /**
    * Writes a warn log message und displays an Alert-Window
    * @param {String} _message Message to log.
    */
    this.warnAlert = function (_message) {
        if (logLevel <= 2) {
            writeLog(_message, "WARN"); 
            alert (localize(warn_str) + "\n" + _message + "\n\n" + localize(consult_log_file_str) + ":\n" + logFile);
        }
    };
 
 
    /**
    * Writes a warn log message
    * @param {String} _message Message to log.
    */
    this.error = function (_message) {
        if (logLevel <= 3)  writeLog(_message, "ERROR"); 
    };
 
    this.errorAlert = function (_message) {
        if (logLevel <= 3) {
            writeLog(_message, "ERROR"); 
            alert (localize(error_str) + "\n" + _message + "\n\n" + localize(consult_log_file_str) + ":\n" + logFile);
        }
    };
}