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.
%0 Conference Paper
%1 VanCutsem:2010:PDP
%A Van Cutsem, Tom
%A Miller, Mark S.
%B Proceedings of the 6th symposium on Dynamic languages
%C New York, NY, USA
%D 2010
%I ACM
%K Javascript intercession mirrors proxies reflection stratification
%N 12
%P 59--72
%R 10.1145/1899661.1869638
%T Proxies: Design Principles for Robust Object-oriented
Intercession APIs
%X 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.
@inproceedings{VanCutsem:2010:PDP,
abstract = {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.},
acmid = {1869638},
added-at = {2012-01-07T18:25:03.000+0100},
address = {New York, NY, USA},
author = {Van Cutsem, Tom and Miller, Mark S.},
biburl = {https://www.bibsonomy.org/bibtex/27c0c43ed4fe32ec5c681f61c64c3fb8e/gron},
booktitle = {Proceedings of the 6th symposium on Dynamic languages},
doi = {10.1145/1899661.1869638},
interhash = {24af65e87bcbbdeb5bf19a98b397e608},
intrahash = {7c0c43ed4fe32ec5c681f61c64c3fb8e},
issn = {0362-1340},
issue_date = {December 2010},
keywords = {Javascript intercession mirrors proxies reflection stratification},
month = {October},
number = 12,
numpages = {14},
pages = {59--72},
publisher = {ACM},
series = {DLS '10},
timestamp = {2013-08-05T21:58:03.000+0200},
title = {Proxies: Design Principles for Robust Object-oriented
Intercession APIs},
year = 2010
}