是否可以在ActionScript 3中拦截属性获取/设置?

时间:2009-09-09 10:44:50

标签: actionscript-3 python

在ActionScript 3中进行开发时,我经常发现自己正在寻找一种方法来实现类似于python的__getattr__ / __setattr__魔术方法提供的方法,即能够拦截属性查找实例,并做一些自定义的事情。

在ActionScript 3中是否有一些可接受的方法可以实现此目的?在AS3中,属性查找对于正常(密封)和动态类的行为略有不同 - 理想情况下,对于两种情况,这将以相同的方式工作。在python中,这对于各种对象(当然!)都很有效,即使对于dict本身的子类也是如此!

2 个答案:

答案 0 :(得分:0)

查看flash.utils.Proxy对象。

  

使用Proxy类可以覆盖   ActionScript的默认行为   操作(例如检索和   修改对象上的属性。

答案 1 :(得分:0)

在AS3中,您可以编写显式变量访问器。 示例Class1

private var __myvar:String;

public function get myvar():String { return __myvar; }
public function set myvar(value:String):void { __myvar = value; }

现在,当您创建Class1的实例时,您可以通过访问器函数访问__myvar。 如果你想设置bindable那个var你必须把[Bindable]关键字放在它的一个访问者身上。

此外,您还可以仅实现getter或setter,因此您的var将只读或写。

我希望它有所帮助。