假设(作为示例)我有一个类,我想将所有方法调用记录到其中。
在 PHP 中,这可以通过 __call()
快速轻松地完成,或者在 Python 中使用装饰器来完成。
在 Actionscript 3 中完成相同任务的最简单方法是什么?
最佳答案
扩展flash.utils.Proxy
并使用flash.utils.flash_proxy
命名空间。还有类似于 __get
、__set
的方法以及删除方法。例如,__call
方法是:
override flash_proxy function callProperty(name:*, ...rest):*;
因此,如果有一个扩展 Proxy 的类,您可以:
var test:MyObject = new MyObject();
test.myMethodThatIsntDefined("param");
然后将调用 callProperty 并将名称设置为“myMethodThatIsntDefined”,并且“param”将位于 ...rest 数组中。
asdoc 的链接有一个简单的实现,应该可以帮助您继续。我通常将 Proxy 类用于 API 之类的东西。例如,当时我有一个 Flickr API 包装器,它将函数调用的名称转换为 Flickr API 中的 API 方法名称。像这样的东西:
flickr.galleriesGetPhotos();
在 callProperty 中,我将拆分第一个单词以获取 API 名称“flickr.galleries.get_photos”。我想当时的名字是不同的。
关于php - 类似于 Actionscript 中 PHP 的 __call(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3553822/