Proxy merged with Object

by SSRRDD

JavaScript

(function()
{
  class Test1
  {
    constructor()
    {
      this.someProperty = 'la-la';
      this.someMethod = function()
      {
        console.log("someMethod");
      }
      return new Proxy(this, 
        {
          get: function(target, property) 
          { 
            if (target[property] === undefined) 
            {
              return function()
              {
                console.log('attempt to call an undefined method', property, arguments);
              };
            }
            else 
            { //return target[property];
              return Reflect.get(...arguments); // can have a reciever function: Reflect.get(target, propertyKey[, receiver])
            }
          }
        });
    }
    somePrototypeMethod(value)
    {
        console.log("somePrototypeMethod", value);
    }
  }
  var testO = new Test1();
  

  console.log(testO);
  console.log(testO.someProperty);
  testO.someMethod();
  testO.somePrototypeMethod(3);
  testO.unknownMethod('1', 2);

})();