Method[] methods = MyObject.class.getMethods();
for(Method method : methods){
    System.out.println("method = " + method.getName());
}Constructor[] constructors = aClass.getConstructors();Function.prototype.apply.call(func, obj, args)
func.apply(obj, args)
Reflect.apply.call(func, obj, args)var obj = new F(...args)
var obj = Reflect.construct(F, args)class Greeting {
   constructor(name) { this.name = name }
   greet() { return `Hello ${this.name}` }
}
const greetingFactory = name => Reflect.construct(Greeting, [name]);
const obj = greetingFactory('Tuturu');
obj.greet();const $ = document.querySelector.bind(document);
Element.prototype.on = Element.prototype.addEventListener;console.log( $('some').innerHTML );
error TypeError: Cannot read property 'innerHTML' of nullconst $ = selector =>
  new Proxy(
    document.querySelector(selector)||Element,
    { get: (target, key) => Reflect.get(target, key) }
   )
;console.log( $('some').innerHTML ); // undefinedconst emptyObj = () =>
 new Proxy({},
   {
     get: (target, key, receiver) => (
           Reflect.has(target, key) ||
           Reflect.set(target, key, emptyObj()),
           Reflect.get(target, key, receiver)
     )
   }
 )
;
const path = emptyObj();
path.to.virtual.node.in.empty.object = 123;
console.log(path.to.virtual.node.in.empty.object); // 123const emptyObj = () =>
 new Proxy({}, {
     get: (target, key, receiver) => (
        key == 'toJSON' ? () => target : (
              Reflect.has(target, key) ||
              Reflect.set(target, key, emptyObj()),
              Reflect.get(target, key, receiver)
            )
     )
   }
 );
const path = emptyObj();
path.to.virtual.node.in.empty.object = 123;
console.log(JSON.stringify(path));
// {"to":{"virtual":{"node":{"in":{"empty":{"object":123}}}}}}try {
   Object.defineProperty(obj, name, desc);
   // property defined successfully
} catch (e) {
   // possible failure (and might accidentally catch the wrong exception)
}
/* --- OR --- */
if (Reflect.defineProperty(obj, name, desc)) {
   // success
} else {
   // failure
}const myObject = Object.create(null);
myObject.foo = 123;
myObject.hasOwnProperty === undefined; // true
Object.prototype.hasOwnProperty.call( myObject, 'foo' );
Reflect.ownKeys(myObject).includes('foo')emitDecoratorMetadata
Reflect.getMetadata()