refletir JavaScript

// Reflect API provides ability to manage object properties/methods
// at run-time. All the methods of Reflect are static. 
class Person {
    constructor(firstName, lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }
};
const args = ['John', 'Doe'];
// construct method is equivalent to new operator
const john = Reflect.construct(Person, args); // john = new Person(args[0],args[1])
console.log(john.lastName); // Doe 
// has(object, propertyKey): returns true if object has specified property
console.log(Reflect.has(john, "firstName"));
// apply(function to call, value of "this", arguments)
// Below executes charAt on firstName. 
// Output we get is 'n': 4th char in first name
console.log(Reflect.apply("".charAt, john.firstName, [3])); 
Wissam