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. Categories and Subject Descriptors D.3.2 [Language Classifications]: Object-oriented languages General Terms Design, Languages Keywords Proxies, Javascript, Reflection, Intercession
Tom Van Cutsem, Mark S. Miller