Proxies are a powerful approach to implement meta-objects in object-oriented
languages without having to resort to metacircular interpretation. We introduce
such a meta-level API based on proxies for Javascript. We simultaneously introduce
a set of design principles that characterize such APIs in general, and compare
similar APIs of other languages in terms of these principles. We highlight how
principled proxy-based APIs improve code robustness by avoiding interference
between base and meta-level code that occur in more common reflective intercession
mechanisms.