Global object provides introspection, JS "internal" methods.
Reflect.apply(functionInstance, thisObject, argumentArray) - just Function.apply. Why Reflect.apply? Because functionInstance.apply could be (though unlikely) changed...
Reflect.construct ( constructor, argumentsList [, constructorToCreateThis] ) - call a constructor with arguments, the third argument can be omitted and default to the first. ES5 style: instance=Object.create(SomeClass.prototype); SomeClass.apply(instance, arguments)
Reflect.defineProperty ( target, propertyKey, attributes ) - Object.defineProperty
Reflect.getOwnPropertyDescriptor ( target, propertyKey ) - Object.getOwnPropertyDescriptor
Reflect.deleteProperty ( target, propertyKey )
Reflect.getPrototypeOf ( target ) - Object.getPrototypeOf
Reflect.setPrototypeOf ( target, proto )
Reflect.isExtensible (target)
Reflect.preventExtensions ( target )
Reflect.get ( target, propertyKey [ , receiver ]) - just call target[propertyKey], throw if target is not object, receiver can be the 'this' object if target[propertyKey] is a getter function
Reflect.set ( target, propertyKey, V [ , receiver ] ) - same above
Reflect.has ( target, propertyKey ) - same as 'in' operator
Reflect.ownKeys ( target ) - combination of Object.getOwnPropertyNames and Object.getOwnPropertySymbols.