Experimenting with Mirrors for JavaScript
A common capability of many dynamic languages, such as JavaScript, is the ability of a program to inspect and modify its own structure. This capability is generally called reflection. Examples of reflective capabilities of JavaScript include things like the hasOwnProperty and isPrototypeOf methods