Loading lesson path
Concept visual
Start at both ends
Reflect.apply()
Reflect.construct() Create object (like new) Reflect.defineProperty()
Reflect.deleteProperty()
Reflect.get()
Reflect.getOwnPropertyDescriptor()
Reflect.getPrototypeOf()
Reflect.has()
Reflect.isExtensible()
Reflect.ownKeys() Get all keys (incl. symbols) Reflect.preventExtensions()
Reflect.set()
Reflect.setPrototypeOf()
Reflect is safe and flexible, especially when used inside a Proxy.
Description handler.apply() Call a function handler.construct() Create object (like new) handler.defineProperty() Define a property handler.deleteProperty() Delete a property handler.get() Get a property handler.getOwnPropertyDescriptor() Get property descriptor handler.getPrototypeOf() Get the prototype of an object handler.has() Check if property exists handler.isExtensible() Check if object can grow handler.ownKeys() Get all keys (incl. symbols) handler.preventExtensions() Stop object from growing handler.set() Set a property handler.setPrototypeOf()
All JavaScript objects have 13 internal methods. Each method has a corresponding Proxy trap:
[[Construct]] construct() [[Call]] apply() [[Get]]
[[Set]] set() [[HasProperty]] has() [[Delete]] deleteProperty() [[DefineProperty]] defineProperty() [[GetOwnProperty]] getOwnProperty() [[OwnPropertyKeys]] ownPropertyKeys() [[IsExstensible]] isExtensible() [[PreventExstensions]] preventExtensions() [[GetPrototypeOf]] getPrototypeOf() [[SetPrototypeOf]] setPrototypeOf() Every Proxy trap has a Reflect method with the same name and signature.