JSFiddle - React, Tailwind, and code Playground

JavaScript

function makeClass() {
    return function() {
        if(this instanceof arguments.callee) {
            if(typeof this.init === 'function') {
                this.init.apply(this, arguments);
            }
        } else {
            throw new Error('Constructor called as a function');
        }
    };
}

var MyClass = makeClass();

MyClass.prototype = {
    init: function(width, height) {
      var xxx = 3;
      MyClass.prototype.getXXX = function() {
         return xxx;
      };
      MyClass.prototype.setXXX = function(newXXX) {
         xxx = newXXX;
      }
   },
   clear: function(ctx) {},
   draw: function(ctx) {}
};
                                    
var testObj1 = new MyClass();
var testObj2 = new MyClass();

console.log(testObj1.getXXX());
console.log(testObj2.getXXX());
testObj1.setXXX(5);
console.log(testObj1.getXXX());
console.log(testObj2.getXXX());