JSFiddle - React, Tailwind, and code Playground

by braincracking

HTML

<ol id="logger">
<li>logger</li>
</ol>

JavaScript

function mylog(sLog) {
    var oLi = document.createElement('LI');
    oLi.innerHTML = sLog;
    document.getElementById('logger').appendChild( oLi );
};

MY_APP_NAMESPACE = {};
    
(function(){ // début de scope local
MY_APP_NAMESPACE.utils = MY_APP_NAMESPACE.utils || {}; // création d'un sous namespace pour y stocker nos classes utilitaires si celui-ci n'est pas déjà créé

// constructeur
MY_APP_NAMESPACE.utils.customDate = function( iTimeStamp ) {
    this.iTimeStamp = iTimeStamp;
    this.date = new Date();
    this.date.setTime(this.iTimeStamp);
    
};

// variables et méthodes publiques propres à chaque instance
MY_APP_NAMESPACE.utils.customDate.prototype = {
    date:null,
    iTimeStamp:0,
    getMonthName:function() {
        var iMonthNumber = this.date.getMonth();
        return self.aMonthNames[iMonthNumber];
    }
};

// variable statique partagée pour tout le code
MY_APP_NAMESPACE.utils.customDate.aMonthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];

// trick JS pour émuler le self:: en PHP : on utilise une variable locale
var     self = MY_APP_NAMESPACE.utils.customDate,
    privateVariable = 0; // variable privée visible par toutes les instances
})(); // fin de scope local

// privateVariable est privé
mylog( typeof privateVariable ); // undefined
// création d'un objet date
var date1 = new MY_APP_NAMESPACE.utils.customDate(1268733478547); // 16 mars 2010, 10:58
mylog(date1.getMonthName()); // March

// la variable statique est disponible en lecture
mylog(MY_APP_NAMESPACE.utils.customDate.aMonthNames[0]); // January

// et aussi en écriture, ici on change de langue à la volée
MY_APP_NAMESPACE.utils.customDate.aMonthNames = ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Decembre'];
mylog(date1.getMonthName()); // Mars