A way to enable default this scope in a JS to not require binding this or prefacing class members

I have the following module class and to make it work similar to non module functional javascript, I have to bind all the functions to the correct this scope and explicitly use this for class members.

previous javascript:

var globalVariable = 10;
var button = document.getElementById("button");
button.addEventListener("click", buttonClicked); 
function buttonClicked(event) {
    var newValue = globalVariable + globalVariable;
    alert("Hello world");
}

The same thing in a module class is the following:

export App class {
    classVariable = 10;
    button = null;

    constructor() {

      try {
         this.bindProperties(App);
         this.button = document.getElementById("button");
         this.button.addEventListener("click", this.buttonClicked);
      }
      catch(error) {
         this.log(error);
      }
   }

   buttonClicked(event) {
      var newValue = this.globalVariable + this.globalVariable;
      alert("Hello world");
   }

   bindProperties(mainClass) {
      var properties = Object.getOwnPropertyNames(mainClass.prototype);
      for (var key in properties) {
         var property = properties[key]
         if (property!=="constructor") {
            this[property] = this[property].bind(this);
         }
      }
   }
}

What I’d like to know is if there is a setting to allow this:

export App class {
    classVariable = 10;
    button = null;

    constructor() {

      try {
         button = document.getElementById("button");
         button.addEventListener("click", buttonClicked);
      }
      catch(error) {
         console.log(error);
      }
   }

   buttonClicked(event) {
      var newValue = globalVariable + globalVariable;
      alert("Hello world");
   }
}

Basically, is there an option to remove the need for adding this and for binding this class members.

I’m using typescript it is aware of or by default adds this to any class members with code complete. And it flags it if it doesn’t have it.

The confusing part for newbies might be the need to bind the this on class modules. But maybe I’m missing something.

Also, side note, possibly because of the binding method above, the super class members do not call the subclass members if the sub class method is extended.

So if baseclass.log() is called and app class extends base class the base class method is called and not the class method that extends it. But that’s another issue (but related).